diff --git a/examples/SimpleTemperature/SimpleTemperature.ino b/examples/SimpleTemperature/SimpleTemperature.ino index e96c426..6b61723 100644 --- a/examples/SimpleTemperature/SimpleTemperature.ino +++ b/examples/SimpleTemperature/SimpleTemperature.ino @@ -32,11 +32,16 @@ void loop() { if (IMU.temperatureAvailable()) { - int temperature_deg = 0; - IMU.readTemperature(temperature_deg); + int temperature_int = 0; + float temperature_float = 0; + IMU.readTemperature(temperature_int); + IMU.readTemperatureFloat(temperature_float); Serial.print("LSM6DSOX Temperature = "); - Serial.print(temperature_deg); + Serial.print(temperature_int); + Serial.print(" ("); + Serial.print(temperature_float); + Serial.print(")"); Serial.println(" °C"); } } diff --git a/src/LSM6DSOX.cpp b/src/LSM6DSOX.cpp index 91bd594..3bc075c 100644 --- a/src/LSM6DSOX.cpp +++ b/src/LSM6DSOX.cpp @@ -174,7 +174,17 @@ int LSM6DSOXClass::gyroscopeAvailable() return 0; } -int LSM6DSOXClass::readTemperature(int & temperature_deg) +int LSM6DSOXClass::readTemperature(int& temperature_deg) +{ + float temperature_float = 0; + readTemperatureFloat(temperature_float); + + temperature_deg = static_cast(temperature_float); + + return 1; +} + +int LSM6DSOXClass::readTemperatureFloat(float& temperature_deg) { /* Read the raw temperature from the sensor. */ int16_t temperature_raw = 0; @@ -187,7 +197,7 @@ int LSM6DSOXClass::readTemperature(int & temperature_deg) static int const TEMPERATURE_LSB_per_DEG = 256; static int const TEMPERATURE_OFFSET_DEG = 25; - temperature_deg = (static_cast(temperature_raw) / TEMPERATURE_LSB_per_DEG) + TEMPERATURE_OFFSET_DEG; + temperature_deg = (static_cast(temperature_raw) / TEMPERATURE_LSB_per_DEG) + TEMPERATURE_OFFSET_DEG; return 1; } diff --git a/src/LSM6DSOX.h b/src/LSM6DSOX.h index fb06e6e..319824f 100644 --- a/src/LSM6DSOX.h +++ b/src/LSM6DSOX.h @@ -42,7 +42,8 @@ class LSM6DSOXClass { int gyroscopeAvailable(); // Check for available data from gyroscope // Temperature - int readTemperature(int & temperature_deg); + int readTemperature(int& temperature_deg); + int readTemperatureFloat(float& temperature_deg); int temperatureAvailable(); private: