diff --git a/examples/ReadPressure/ReadPressure.ino b/examples/ReadPressure/ReadPressure.ino index 46334e9..00bb7c1 100644 --- a/examples/ReadPressure/ReadPressure.ino +++ b/examples/ReadPressure/ReadPressure.ino @@ -2,8 +2,8 @@ LPS22HB - Read Pressure This example reads data from the on-board LPS22HB sensor of the - Nano 33 BLE Sense and prints the pressure sensor value to the - Serial Monitor once a second. + Nano 33 BLE Sense and prints the temperature and pressure sensor + value to the Serial Monitor once a second. The circuit: - Arduino Nano 33 BLE Sense @@ -32,6 +32,13 @@ void loop() { Serial.print(pressure); Serial.println(" kPa"); + float temperature = BARO.readTemperature(); + + // print the sensor value + Serial.print("Temperature = "); + Serial.print(temperature); + Serial.println(" C"); + // print an empty line Serial.println(); diff --git a/examples/ReadPressureImperial/ReadPressureImperial.ino b/examples/ReadPressureImperial/ReadPressureImperial.ino index 5092e41..464375b 100644 --- a/examples/ReadPressureImperial/ReadPressureImperial.ino +++ b/examples/ReadPressureImperial/ReadPressureImperial.ino @@ -2,8 +2,8 @@ LPS22HB - Read Pressure Imperial This example reads data from the on-board LPS22HB sensor of the - Nano 33 BLE Sense and prints the pressure sensor value in imperial - units to the Serial Monitor once a second. + Nano 33 BLE Sense and prints the temperature and pressure sensor + value in imperial units to the Serial Monitor once a second. The circuit: - Arduino Nano 33 BLE Sense @@ -33,6 +33,13 @@ void loop() { Serial.print(pressure); Serial.println(" psi"); + float temperature = BARO.readTemperature(); + + // print the sensor value + Serial.print("Temperature = "); + Serial.print(temperature); + Serial.println(" C"); + // print an empty line Serial.println(); diff --git a/src/BARO.cpp b/src/BARO.cpp index cdb4ad5..a9122cd 100644 --- a/src/BARO.cpp +++ b/src/BARO.cpp @@ -29,6 +29,8 @@ #define LPS22HB_PRESS_OUT_XL_REG 0x28 #define LPS22HB_PRESS_OUT_L_REG 0x29 #define LPS22HB_PRESS_OUT_H_REG 0x2a +#define LPS22HB_TEMP_OUT_L_REG 0x2b +#define LPS22HB_TEMP_OUT_H_REG 0x2c LPS22HBClass::LPS22HBClass(TwoWire& wire) : _wire(&wire) @@ -75,6 +77,14 @@ float LPS22HBClass::readPressure(int units) } } +float LPS22HBClass::readTemperature(void) +{ + float reading = (i2cRead(LPS22HB_TEMP_OUT_L_REG) << 0) | + (i2cRead(LPS22HB_TEMP_OUT_H_REG) << 8); + + return reading/100; +} + int LPS22HBClass::i2cRead(uint8_t reg) { _wire->beginTransmission(LPS22HB_ADDRESS); diff --git a/src/BARO.h b/src/BARO.h index 0744073..827abe4 100644 --- a/src/BARO.h +++ b/src/BARO.h @@ -37,6 +37,7 @@ class LPS22HBClass { void end(); float readPressure(int units = KILOPASCAL); + float readTemperature(void); private: int i2cRead(uint8_t reg);