Skip to content

Commit 2e7bbe5

Browse files
committed
Adding API to retrieve temperature from LSM6DSOX.
1 parent 1fdef5b commit 2e7bbe5

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

src/LSM6DSOX.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@
3131
#define LSM6DSOX_CTRL7_G 0X16
3232
#define LSM6DSOX_CTRL8_XL 0X17
3333

34+
#define LSM6DSOX_OUT_TEMP_L 0X20
35+
#define LSM6DSOX_OUT_TEMP_H 0X21
36+
3437
#define LSM6DSOX_OUTX_L_G 0X22
3538
#define LSM6DSOX_OUTX_H_G 0X23
3639
#define LSM6DSOX_OUTY_L_G 0X24
@@ -171,6 +174,33 @@ int LSM6DSOXClass::gyroscopeAvailable()
171174
return 0;
172175
}
173176

177+
int LSM6DSOXClass::readTemperature(int & temperature_deg)
178+
{
179+
/* Read the raw temperature from the sensor. */
180+
int16_t temperature_raw = 0;
181+
182+
if (readRegisters(LSM6DSOX_OUT_TEMP_L, reinterpret_cast<uint8_t*>(&temperature_raw), sizeof(temperature_raw)) != 1) {
183+
return 0;
184+
}
185+
186+
/* Convert to °C. */
187+
static int const TEMPERATURE_LSB_per_DEG = 256;
188+
static int const TEMPERATURE_OFFSET_DEG = 25;
189+
190+
temperature_deg = (static_cast<int>(temperature_raw) / TEMPERATURE_LSB_per_DEG) + TEMPERATURE_OFFSET_DEG;
191+
192+
return 1;
193+
}
194+
195+
int LSM6DSOXClass::temperatureAvailable()
196+
{
197+
if (readRegister(LSM6DSOX_STATUS_REG) & 0x04) {
198+
return 1;
199+
}
200+
201+
return 0;
202+
}
203+
174204
float LSM6DSOXClass::gyroscopeSampleRate()
175205
{
176206
return 104.0F;

src/LSM6DSOX.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ class LSM6DSOXClass {
4141
virtual float gyroscopeSampleRate(); // Sampling rate of the sensor.
4242
virtual int gyroscopeAvailable(); // Check for available data from gyroscope
4343

44+
// Temperature
45+
int readTemperature(int & temperature_deg);
46+
int temperatureAvailable();
4447

4548
private:
4649
int readRegister(uint8_t address);

0 commit comments

Comments
 (0)