Library for LIS2DH12 acc.
Dependents: acnSensa_LIS aconnoCellularGnss Lizzy
Lis2dh12.h
- Committer:
- Dominik Bartolovic
- Date:
- 2018-10-15
- Revision:
- 7:f1ba533021b8
- Parent:
- 2:1fa08c7a2a3c
File content as of revision 7:f1ba533021b8:
/*
*
* LIS2DH12 MEMS digital output motion sensor
* More info @ aconno.de
* Made by Jurica Resetar
* jurica_resetar@yahoo.com
*
*/
#ifndef LIS2DH12_H
#define LIS2DH12_H
#include "mbed.h"
#include "aconno_i2c.h"
#include "Lis2dh12_regs.h"
enum Mode{
HIGH_RES = 0,
NORMAL,
LOW_POWER,
};
enum Axis{
X_axis = 0x01,
Y_axis = 0x02,
Z_axis = 0x04,
};
enum Odr{
PowerDown = 0x00,
ODR_1Hz = 0x01,
ODR_10Hz = 0x02,
ODR_25Hz = 0x03,
ODR_50Hz = 0x04,
ODR_100Hz = 0x05,
ODR_200Hz = 0x06,
ODR_400Hz = 0x07,
ODR_1620Hz = 0x08,
ODR_Max = 0x09, // HighRes/Normal -> 1.344kHz, LowPower -> 5.376kHz
};
enum Scale{
_2g = 0x00,
_4g = 0x01,
_8g = 0x02,
_16g = 0x03,
};
class Lis2dh12{
public:
Lis2dh12(I2C *i2c_, char address);
Lis2dh12(SPI *_spi, DigitalOut *_cs);
uint8_t whoIAm();
uint8_t setMode(Mode mode);
uint8_t enableAxes(Axis axis);
uint8_t disableAxes(Axis axis);
int16_t readXAxis();
int16_t readYAxis();
int16_t readZAxis();
uint8_t setODR(Odr odr);
uint8_t setScale(Scale scale);
uint8_t int1Setup(uint8_t setup);
uint8_t int1Latch(uint8_t enable);
uint8_t int1Duration(uint8_t duration);
uint8_t int1Threshold(uint8_t threshold);
uint8_t int1Config(uint8_t config);
void clearIntFlag();
private:
aconno_i2c i2c;
SPI *spi;
DigitalOut *cs;
bool spiInterface;
uint8_t readFromReg(uint8_t regAddr, uint8_t *buff, size_t buffSize);
uint8_t writeToReg(uint8_t regAddr, uint8_t *buff, size_t buffSize);
};
#endif

