Soldered LSM6DS3 Arduino library 1.0.0
Library for LSM6DS3 accelerometer and gyroscope by Soldered
Loading...
Searching...
No Matches
LSM6DS3Sensor.h
Go to the documentation of this file.
1
38
39
40/* Prevent recursive inclusion -----------------------------------------------*/
41
42#ifndef __LSM6DS3Sensor_H__
43#define __LSM6DS3Sensor_H__
44
45
46/* Includes ------------------------------------------------------------------*/
47
48#include "Wire.h"
50
51/* Defines -------------------------------------------------------------------*/
52
53#define LSM6DS3_ACC_SENSITIVITY_FOR_FS_2G 0.061
54#define LSM6DS3_ACC_SENSITIVITY_FOR_FS_4G 0.122
55#define LSM6DS3_ACC_SENSITIVITY_FOR_FS_8G 0.244
56#define LSM6DS3_ACC_SENSITIVITY_FOR_FS_16G 0.488
57
58#define LSM6DS3_GYRO_SENSITIVITY_FOR_FS_125DPS 04.375
59#define LSM6DS3_GYRO_SENSITIVITY_FOR_FS_245DPS 08.750
60#define LSM6DS3_GYRO_SENSITIVITY_FOR_FS_500DPS 17.500
61#define LSM6DS3_GYRO_SENSITIVITY_FOR_FS_1000DPS 35.000
62#define LSM6DS3_GYRO_SENSITIVITY_FOR_FS_2000DPS 70.000
63
64#define LSM6DS3_PEDOMETER_THRESHOLD_LOW 0x00
65#define LSM6DS3_PEDOMETER_THRESHOLD_MID_LOW 0x07
66#define LSM6DS3_PEDOMETER_THRESHOLD_MID 0x0F
67#define LSM6DS3_PEDOMETER_THRESHOLD_MID_HIGH 0x17
68#define LSM6DS3_PEDOMETER_THRESHOLD_HIGH 0x1F
69
70#define LSM6DS3_WAKE_UP_THRESHOLD_LOW 0x01
71#define LSM6DS3_WAKE_UP_THRESHOLD_MID_LOW 0x0F
72#define LSM6DS3_WAKE_UP_THRESHOLD_MID 0x1F
73#define LSM6DS3_WAKE_UP_THRESHOLD_MID_HIGH 0x2F
74#define LSM6DS3_WAKE_UP_THRESHOLD_HIGH 0x3F
75
76#define LSM6DS3_TAP_THRESHOLD_LOW 0x01
77#define LSM6DS3_TAP_THRESHOLD_MID_LOW 0x08
78#define LSM6DS3_TAP_THRESHOLD_MID 0x10
79#define LSM6DS3_TAP_THRESHOLD_MID_HIGH 0x18
80#define LSM6DS3_TAP_THRESHOLD_HIGH 0x1F
81
82#define LSM6DS3_TAP_SHOCK_TIME_LOW 0x00
83#define LSM6DS3_TAP_SHOCK_TIME_MID_LOW 0x01
84#define LSM6DS3_TAP_SHOCK_TIME_MID_HIGH 0x02
85#define LSM6DS3_TAP_SHOCK_TIME_HIGH 0x03
86
87#define LSM6DS3_TAP_QUIET_TIME_LOW 0x00
88#define LSM6DS3_TAP_QUIET_TIME_MID_LOW 0x01
89#define LSM6DS3_TAP_QUIET_TIME_MID_HIGH 0x02
90#define LSM6DS3_TAP_QUIET_TIME_HIGH 0x03
91
92#define LSM6DS3_TAP_DURATION_TIME_LOW 0x00
93#define LSM6DS3_TAP_DURATION_TIME_MID_LOW 0x04
94#define LSM6DS3_TAP_DURATION_TIME_MID 0x08
95#define LSM6DS3_TAP_DURATION_TIME_MID_HIGH 0x0C
96#define LSM6DS3_TAP_DURATION_TIME_HIGH 0x0F
97
98/* Typedefs ------------------------------------------------------------------*/
106
112
113typedef struct
114{
115 unsigned int FreeFallStatus : 1;
116 unsigned int TapStatus : 1;
117 unsigned int DoubleTapStatus : 1;
118 unsigned int WakeUpStatus : 1;
119 unsigned int StepStatus : 1;
120 unsigned int TiltStatus : 1;
121 unsigned int D6DOrientationStatus : 1;
123
124/* Class Declaration ---------------------------------------------------------*/
125
131{
132 public:
133 LSM6DS3Sensor (TwoWire *i2c, uint8_t address=LSM6DS3_ACC_GYRO_I2C_ADDRESS_HIGH);
140 LSM6DS3StatusTypeDef readId (uint8_t *p_id);
142 LSM6DS3StatusTypeDef getGyroAxes (int32_t *pData);
146 LSM6DS3StatusTypeDef getGyroAxesRaw (int16_t *pData);
148 LSM6DS3StatusTypeDef getGyroOdr (float *odr);
152 LSM6DS3StatusTypeDef getGyroFullScale (float *fullScale);
154 LSM6DS3StatusTypeDef setGyroFullScale (float fullScale);
161 LSM6DS3StatusTypeDef getStepCounter (uint16_t *step_count);
191 LSM6DS3StatusTypeDef readRegister (uint8_t reg, uint8_t *data);
192 LSM6DS3StatusTypeDef writeRegister (uint8_t reg, uint8_t data);
193
201 uint8_t ioRead(uint8_t* pBuffer, uint8_t RegisterAddr, uint16_t NumByteToRead)
202 {
203 if (dev_i2c) {
204 dev_i2c->beginTransmission(((uint8_t)(((address) >> 1) & 0x7F)));
205 dev_i2c->write(RegisterAddr);
206 dev_i2c->endTransmission(false);
207
208 dev_i2c->requestFrom(((uint8_t)(((address) >> 1) & 0x7F)), (byte) NumByteToRead);
209
210 int i=0;
211 while (dev_i2c->available())
212 {
213 pBuffer[i] = dev_i2c->read();
214 i++;
215 }
216
217 return 0;
218 }
219
220 return 1;
221 }
222
230 uint8_t ioWrite(uint8_t* pBuffer, uint8_t RegisterAddr, uint16_t NumByteToWrite)
231 {
232 if (dev_i2c) {
233 dev_i2c->beginTransmission(((uint8_t)(((address) >> 1) & 0x7F)));
234
235 dev_i2c->write(RegisterAddr);
236 for (int i = 0 ; i < NumByteToWrite ; i++)
237 dev_i2c->write(pBuffer[i]);
238
239 dev_i2c->endTransmission(true);
240
241 return 0;
242 }
243
244 return 1;
245 }
246
247 private:
252
253 /* Helper classes. */
254 TwoWire *dev_i2c;
255 /* Configuration */
256 uint8_t address;
257
258 uint8_t X_isEnabled;
260 uint8_t G_isEnabled;
262};
263
264#ifdef __cplusplus
265extern "C" {
266#endif
267uint8_t lsm6ds3IoWrite( void *handle, uint8_t WriteAddr, uint8_t *pBuffer, uint16_t nBytesToWrite );
268uint8_t lsm6ds3IoRead( void *handle, uint8_t ReadAddr, uint8_t *pBuffer, uint16_t nBytesToRead );
269#ifdef __cplusplus
270}
271#endif
272
273#endif
LSM6DS3 header driver file.
LSM6DS3StatusTypeDef
Definition LSM6DS3Sensor.h:100
@ LSM6DS3_STATUS_OK
Definition LSM6DS3Sensor.h:101
@ LSM6DS3_STATUS_NOT_IMPLEMENTED
Definition LSM6DS3Sensor.h:104
@ LSM6DS3_STATUS_TIMEOUT
Definition LSM6DS3Sensor.h:103
@ LSM6DS3_STATUS_ERROR
Definition LSM6DS3Sensor.h:102
uint8_t lsm6ds3IoWrite(void *handle, uint8_t WriteAddr, uint8_t *pBuffer, uint16_t nBytesToWrite)
Definition LSM6DS3Sensor.cpp:2150
uint8_t lsm6ds3IoRead(void *handle, uint8_t ReadAddr, uint8_t *pBuffer, uint16_t nBytesToRead)
Definition LSM6DS3Sensor.cpp:2155
LSM6DS3_Interrupt_Pin_t
Definition LSM6DS3Sensor.h:108
@ LSM6DS3_INT2_PIN
Definition LSM6DS3Sensor.h:110
@ LSM6DS3_INT1_PIN
Definition LSM6DS3Sensor.h:109
LSM6DS3StatusTypeDef disableGyro(void)
Disable LSM6DS3 Gyroscope.
Definition LSM6DS3Sensor.cpp:247
LSM6DS3StatusTypeDef resetStepCounter(void)
Reset of the step counter for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1118
LSM6DS3StatusTypeDef setTapShockTime(uint8_t time)
Set the tap shock time window for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1709
LSM6DS3StatusTypeDef enableAccelerator(void)
Enable LSM6DS3 Accelerator.
Definition LSM6DS3Sensor.cpp:172
LSM6DS3StatusTypeDef disableTiltDetection(void)
Disable the tilt detection for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1220
LSM6DS3StatusTypeDef setAcceleratorOdrWhenDisabled(float odr)
Set LSM6DS3 Accelerometer output data rate when disabled.
Definition LSM6DS3Sensor.cpp:657
LSM6DS3StatusTypeDef disable6dOrientation(void)
Disable the 6D orientation detection for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1813
LSM6DS3StatusTypeDef setTapQuietTime(uint8_t time)
Set the tap quiet time window for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1724
LSM6DS3StatusTypeDef getAcceleratorFullScale(float *fullScale)
Read LSM6DS3 Accelerometer full scale.
Definition LSM6DS3Sensor.cpp:748
LSM6DS3StatusTypeDef getEventStatus(LSM6DS3_Event_Status_t *status)
Get the status of all hardware events for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:2015
LSM6DS3StatusTypeDef getGyroOdr(float *odr)
Read LSM6DS3 Gyroscope output data rate.
Definition LSM6DS3Sensor.cpp:553
LSM6DS3StatusTypeDef enableFreeFallDetection(void)
Enable free fall detection.
Definition LSM6DS3Sensor.cpp:891
LSM6DS3StatusTypeDef readRegister(uint8_t reg, uint8_t *data)
Read the data from register.
Definition LSM6DS3Sensor.cpp:2121
LSM6DS3StatusTypeDef disableAccelerator(void)
Disable LSM6DS3 Accelerator.
Definition LSM6DS3Sensor.cpp:218
LSM6DS3StatusTypeDef setGyroOdrWhenEnabled(float odr)
Set LSM6DS3 Gyroscope output data rate when enabled.
Definition LSM6DS3Sensor.cpp:703
LSM6DS3StatusTypeDef enableSingleTapDetection(void)
Enable the single tap detection for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1368
LSM6DS3StatusTypeDef enableTiltDetection(void)
Enable the tilt detection for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1155
uint8_t address
Definition LSM6DS3Sensor.h:256
LSM6DS3StatusTypeDef setGyroOdr(float odr)
Set LSM6DS3 Gyroscope output data rate.
Definition LSM6DS3Sensor.cpp:678
LSM6DS3StatusTypeDef disableWakeUpDetection(void)
Disable the wake up detection for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1319
LSM6DS3StatusTypeDef enable6dOrientation(void)
Enable the 6D orientation detection for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1754
LSM6DS3StatusTypeDef disablePedometer(void)
Disable the pedometer feature for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1070
float X_Last_ODR
Definition LSM6DS3Sensor.h:259
LSM6DS3StatusTypeDef getGyroFullScale(float *fullScale)
Read LSM6DS3 Gyroscope full scale.
Definition LSM6DS3Sensor.cpp:784
LSM6DS3StatusTypeDef get6dOrientationYh(uint8_t *yh)
Get the 6D orientation YH axis for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1928
LSM6DS3StatusTypeDef enableDoubleTapDetection(void)
Enable the double tap detection for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1523
LSM6DS3StatusTypeDef getAcceleratorAxes(int32_t *pData)
Read data from LSM6DS3 Accelerometer.
Definition LSM6DS3Sensor.cpp:298
LSM6DS3StatusTypeDef disableFreeFallDetection(void)
Disable free fall detection.
Definition LSM6DS3Sensor.cpp:975
LSM6DS3StatusTypeDef readId(uint8_t *p_id)
Read ID of LSM6DS3 Accelerometer and Gyroscope.
Definition LSM6DS3Sensor.cpp:277
float G_Last_ODR
Definition LSM6DS3Sensor.h:261
LSM6DS3StatusTypeDef getAcceleratorSensitivity(float *pfData)
Read Accelerometer Sensitivity.
Definition LSM6DS3Sensor.cpp:358
LSM6DS3StatusTypeDef setAcceleratorOdrWhenEnabled(float odr)
Set LSM6DS3 Accelerometer output data rate when enabled.
Definition LSM6DS3Sensor.cpp:629
LSM6DS3StatusTypeDef getAcceleratorOdr(float *odr)
Read LSM6DS3 Accelerometer output data rate.
Definition LSM6DS3Sensor.cpp:496
LSM6DS3StatusTypeDef setWakeUpThreshold(uint8_t thr)
Set the wake up threshold for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1353
LSM6DS3StatusTypeDef getStepCounter(uint16_t *step_count)
Get the step counter for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1104
LSM6DS3StatusTypeDef begin(void)
Configure the sensor in order to be used.
Definition LSM6DS3Sensor.cpp:61
uint8_t ioRead(uint8_t *pBuffer, uint8_t RegisterAddr, uint16_t NumByteToRead)
Utility function to read data.
Definition LSM6DS3Sensor.h:201
LSM6DS3StatusTypeDef get6dOrientationZl(uint8_t *zl)
Get the 6D orientation ZL axis for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1957
LSM6DS3StatusTypeDef disableDoubleTapDetection(void)
Disable the double tap detection for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1624
LSM6DS3StatusTypeDef setGyroOdrWhenDisabled(float odr)
Set LSM6DS3 Gyroscope output data rate when disabled.
Definition LSM6DS3Sensor.cpp:729
LSM6DS3StatusTypeDef setFreeFallThreshold(uint8_t thr)
Set the free fall detection threshold for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1009
LSM6DS3StatusTypeDef getGyroSensitivity(float *pfData)
Read Gyroscope Sensitivity.
Definition LSM6DS3Sensor.cpp:396
LSM6DS3StatusTypeDef get6dOrientationXh(uint8_t *xh)
Get the 6D orientation XH axis for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1870
LSM6DS3StatusTypeDef setTapDurationTime(uint8_t time)
Set the tap duration of the time window for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1739
LSM6DS3StatusTypeDef enablePedometer(void)
Enable the pedometer feature for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1025
LSM6DS3StatusTypeDef enableGyro(void)
Enable LSM6DS3 Gyroscope.
Definition LSM6DS3Sensor.cpp:195
TwoWire * dev_i2c
Definition LSM6DS3Sensor.h:254
LSM6DS3StatusTypeDef setGyroFullScale(float fullScale)
Set LSM6DS3 Gyroscope full scale.
Definition LSM6DS3Sensor.cpp:855
LSM6DS3StatusTypeDef getGyroAxes(int32_t *pData)
Read data from LSM6DS3 Gyroscope.
Definition LSM6DS3Sensor.cpp:328
LSM6DS3StatusTypeDef setAcceleratorFullScale(float fullScale)
Set LSM6DS3 Accelerometer full scale.
Definition LSM6DS3Sensor.cpp:833
LSM6DS3StatusTypeDef setTapThreshold(uint8_t thr)
Set the tap threshold for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1694
LSM6DS3StatusTypeDef setAcceleratorOdr(float odr)
Set LSM6DS3 Accelerometer output data rate.
Definition LSM6DS3Sensor.cpp:604
LSM6DS3StatusTypeDef end(void)
Disable the sensor and relative resources.
Definition LSM6DS3Sensor.cpp:152
LSM6DS3StatusTypeDef disableSingleTapDetection(void)
Disable the single tap detection for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1461
LSM6DS3StatusTypeDef enableWakeUpDetection(void)
Enable the wake up detection for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1254
LSM6DS3StatusTypeDef getAcceleratorAxesRaw(int16_t *pData)
Read raw data from LSM6DS3 Accelerometer.
Definition LSM6DS3Sensor.cpp:450
uint8_t X_isEnabled
Definition LSM6DS3Sensor.h:258
LSM6DS3StatusTypeDef getGyroAxesRaw(int16_t *pData)
Read raw data from LSM6DS3 Gyroscope.
Definition LSM6DS3Sensor.cpp:473
uint8_t ioWrite(uint8_t *pBuffer, uint8_t RegisterAddr, uint16_t NumByteToWrite)
Utility function to write data.
Definition LSM6DS3Sensor.h:230
LSM6DS3StatusTypeDef writeRegister(uint8_t reg, uint8_t data)
Write the data to register.
Definition LSM6DS3Sensor.cpp:2138
LSM6DS3Sensor(TwoWire *i2c, uint8_t address=LSM6DS3_ACC_GYRO_I2C_ADDRESS_HIGH)
Definition LSM6DS3Sensor.cpp:51
LSM6DS3StatusTypeDef setPedometerThreshold(uint8_t thr)
Set the pedometer threshold for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1140
LSM6DS3StatusTypeDef get6dOrientationZh(uint8_t *zh)
Get the 6D orientation ZH axis for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1986
LSM6DS3StatusTypeDef get6dOrientationYl(uint8_t *yl)
Get the 6D orientation YL axis for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1899
LSM6DS3StatusTypeDef get6dOrientationXl(uint8_t *xl)
Get the 6D orientation XL axis for LSM6DS3 accelerometer sensor.
Definition LSM6DS3Sensor.cpp:1841
uint8_t G_isEnabled
Definition LSM6DS3Sensor.h:260
Definition LSM6DS3Sensor.h:114
unsigned int FreeFallStatus
Definition LSM6DS3Sensor.h:115
unsigned int TiltStatus
Definition LSM6DS3Sensor.h:120
unsigned int TapStatus
Definition LSM6DS3Sensor.h:116
unsigned int D6DOrientationStatus
Definition LSM6DS3Sensor.h:121
unsigned int WakeUpStatus
Definition LSM6DS3Sensor.h:118
unsigned int StepStatus
Definition LSM6DS3Sensor.h:119
unsigned int DoubleTapStatus
Definition LSM6DS3Sensor.h:117