From 3865633eea301f53c19ebc37aab18c76eb825c05 Mon Sep 17 00:00:00 2001 From: daneos Date: Tue, 19 Jul 2022 19:11:19 +0200 Subject: [PATCH 1/2] Return LSM6DSOX temperature as float --- examples/SimpleTemperature/SimpleTemperature.ino | 2 +- src/LSM6DSOX.cpp | 4 ++-- src/LSM6DSOX.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/SimpleTemperature/SimpleTemperature.ino b/examples/SimpleTemperature/SimpleTemperature.ino index e96c426..18fdbec 100644 --- a/examples/SimpleTemperature/SimpleTemperature.ino +++ b/examples/SimpleTemperature/SimpleTemperature.ino @@ -32,7 +32,7 @@ void loop() { if (IMU.temperatureAvailable()) { - int temperature_deg = 0; + float temperature_deg = 0; IMU.readTemperature(temperature_deg); Serial.print("LSM6DSOX Temperature = "); diff --git a/src/LSM6DSOX.cpp b/src/LSM6DSOX.cpp index 91bd594..ae367ea 100644 --- a/src/LSM6DSOX.cpp +++ b/src/LSM6DSOX.cpp @@ -174,7 +174,7 @@ int LSM6DSOXClass::gyroscopeAvailable() return 0; } -int LSM6DSOXClass::readTemperature(int & temperature_deg) +int LSM6DSOXClass::readTemperature(float& temperature_deg) { /* Read the raw temperature from the sensor. */ int16_t temperature_raw = 0; @@ -187,7 +187,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..132f93f 100644 --- a/src/LSM6DSOX.h +++ b/src/LSM6DSOX.h @@ -42,7 +42,7 @@ class LSM6DSOXClass { int gyroscopeAvailable(); // Check for available data from gyroscope // Temperature - int readTemperature(int & temperature_deg); + int readTemperature(float& temperature_deg); int temperatureAvailable(); private: From c65adf10dc0fec8dde003ef53b21a150b69c4508 Mon Sep 17 00:00:00 2001 From: daneos Date: Mon, 22 Aug 2022 14:25:29 +0200 Subject: [PATCH 2/2] Split temperature reading into two functions --- examples/SimpleTemperature/SimpleTemperature.ino | 11 ++++++++--- src/LSM6DSOX.cpp | 12 +++++++++++- src/LSM6DSOX.h | 3 ++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/examples/SimpleTemperature/SimpleTemperature.ino b/examples/SimpleTemperature/SimpleTemperature.ino index 18fdbec..6b61723 100644 --- a/examples/SimpleTemperature/SimpleTemperature.ino +++ b/examples/SimpleTemperature/SimpleTemperature.ino @@ -32,11 +32,16 @@ void loop() { if (IMU.temperatureAvailable()) { - float 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 ae367ea..3bc075c 100644 --- a/src/LSM6DSOX.cpp +++ b/src/LSM6DSOX.cpp @@ -174,7 +174,17 @@ int LSM6DSOXClass::gyroscopeAvailable() return 0; } -int LSM6DSOXClass::readTemperature(float& 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; diff --git a/src/LSM6DSOX.h b/src/LSM6DSOX.h index 132f93f..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(float& temperature_deg); + int readTemperature(int& temperature_deg); + int readTemperatureFloat(float& temperature_deg); int temperatureAvailable(); private: