File tree Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change 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+
174204float LSM6DSOXClass::gyroscopeSampleRate ()
175205{
176206 return 104 .0F ;
Original file line number Diff line number Diff 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);
You can’t perform that action at this time.
0 commit comments