19 #include "LSM9DS1_Registers.h" 20 #include "LSM9DS1_Types.h" 23 #define LSM9DS1_AG_ADDR(sa0) ((sa0) == 0 ? 0x6A : 0x6B) 24 #define LSM9DS1_M_ADDR(sa1) ((sa1) == 0 ? 0x1C : 0x1E) 47 float gBias[3], aBias[3], mBias[3];
48 int16_t gBiasRaw[3], aBiasRaw[3], mBiasRaw[3];
60 LSM9DS1(interface_mode interface, uint8_t xgAddr, uint8_t mAddr);
68 void calibrate(
bool autoCalc =
true);
69 void calibrateMag(
bool loadIn =
true);
70 void magOffset(uint8_t axis, int16_t offset);
76 uint8_t accelAvailable();
82 uint8_t gyroAvailable();
88 uint8_t tempAvailable();
98 uint8_t magAvailable(lsm9ds1_axis axis = ALL_AXIS);
112 int16_t readGyro(lsm9ds1_axis axis);
126 int16_t readAccel(lsm9ds1_axis axis);
140 int16_t readMag(lsm9ds1_axis axis);
153 float calcGyro(int16_t gyro);
160 float calcAccel(int16_t accel);
167 float calcMag(int16_t mag);
175 void setGyroScale(uint16_t gScl);
183 void setAccelScale(uint8_t aScl);
191 void setMagScale(uint8_t mScl);
196 void setGyroODR(uint8_t gRate);
201 void setAccelODR(uint8_t aRate);
206 void setMagODR(uint8_t mRate);
215 void configInactivity(uint8_t duration, uint8_t threshold,
bool sleepOn);
224 void configAccelInt(uint8_t generator,
bool andInterrupts =
false);
235 void configAccelThs(uint8_t threshold, lsm9ds1_axis axis, uint8_t duration = 0,
bool wait = 0);
245 void configGyroInt(uint8_t generator,
bool aoi,
bool latch);
256 void configGyroThs(int16_t threshold, lsm9ds1_axis axis, uint8_t duration,
bool wait);
269 void configInt(interrupt_select interupt, uint8_t generator,
270 h_lactive activeLow = INT_ACTIVE_LOW, pp_od pushPull = INT_PUSH_PULL);
279 void configMagInt(uint8_t generator, h_lactive activeLow,
bool latch =
true);
285 void configMagThs(uint16_t threshold);
288 uint8_t getGyroIntSrc();
291 uint8_t getAccelIntSrc();
294 uint8_t getMagIntSrc();
297 uint8_t getInactivity();
302 void sleepGyro(
bool enable =
true);
307 void enableFIFO(
bool enable =
true);
315 void setFIFO(fifoMode_type fifoMode, uint8_t fifoThs);
318 uint8_t getFIFOSamples();
324 uint8_t _mAddress, _xgAddress;
329 float gRes, aRes, mRes;
341 void init(interface_mode interface, uint8_t xgAddr, uint8_t mAddr);
383 uint8_t mReadByte(uint8_t subAddress);
394 uint8_t mReadBytes(uint8_t subAddress, uint8_t * dest, uint8_t count);
400 void mWriteByte(uint8_t subAddress, uint8_t data);
407 uint8_t xgReadByte(uint8_t subAddress);
418 uint8_t xgReadBytes(uint8_t subAddress, uint8_t * dest, uint8_t count);
424 void xgWriteByte(uint8_t subAddress, uint8_t data);
444 void constrainScales();
458 void SPIwriteByte(uint8_t csPin, uint8_t subAddress, uint8_t data);
466 uint8_t SPIreadByte(uint8_t csPin, uint8_t subAddress);
476 uint8_t SPIreadBytes(uint8_t csPin, uint8_t subAddress,
477 uint8_t * dest, uint8_t count);
491 void I2CwriteByte(uint8_t address, uint8_t subAddress, uint8_t data);
499 uint8_t I2CreadByte(uint8_t address, uint8_t subAddress);
509 uint8_t I2CreadBytes(uint8_t address, uint8_t subAddress, uint8_t * dest, uint8_t count);
512 #endif // SFE_LSM9DS1_H //