Accelerometer library following SparkFun experiment guide.

Committer:
slicht
Date:
Thu Oct 19 12:53:02 2017 +0000
Revision:
0:b3305e3c9e73
Initial commit for OCE360_4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
slicht 0:b3305e3c9e73 1 // Library for our MMA8452Q 3-axis accelerometer
slicht 0:b3305e3c9e73 2 // Based on the MMA8452Q Arduino Library by Jim Lindblom (SparkFun Electronics)
slicht 0:b3305e3c9e73 3
slicht 0:b3305e3c9e73 4 #ifndef MMA8452Q_H
slicht 0:b3305e3c9e73 5 #define MMA8452Q_H
slicht 0:b3305e3c9e73 6
slicht 0:b3305e3c9e73 7 #include "mbed.h"
slicht 0:b3305e3c9e73 8
slicht 0:b3305e3c9e73 9 // Register definitions
slicht 0:b3305e3c9e73 10 #define REG_STATUS 0x00
slicht 0:b3305e3c9e73 11 #define OUT_X_MSB 0x01
slicht 0:b3305e3c9e73 12 #define OUT_X_LSB 0x02
slicht 0:b3305e3c9e73 13 #define OUT_Y_MSB 0x03
slicht 0:b3305e3c9e73 14 #define OUT_Y_LSB 0x04
slicht 0:b3305e3c9e73 15 #define OUT_Z_MSB 0x05
slicht 0:b3305e3c9e73 16 #define OUT_Z_LSB 0x06
slicht 0:b3305e3c9e73 17 #define REG_WHO_AM_I 0x0D
slicht 0:b3305e3c9e73 18 #define REG_XYZ_DATA_CFG 0x0E
slicht 0:b3305e3c9e73 19 #define REG_CTRL_REG1 0x2A
slicht 0:b3305e3c9e73 20
slicht 0:b3305e3c9e73 21 // WHO_AM_I check
slicht 0:b3305e3c9e73 22 #define FACTORY_ID 0x2A
slicht 0:b3305e3c9e73 23
slicht 0:b3305e3c9e73 24 // Scale definitions
slicht 0:b3305e3c9e73 25 #define SCALE_2G 2
slicht 0:b3305e3c9e73 26 #define SCALE_4G 4
slicht 0:b3305e3c9e73 27 #define SCALE_8G 8
slicht 0:b3305e3c9e73 28
slicht 0:b3305e3c9e73 29 // Data rates
slicht 0:b3305e3c9e73 30 #define ODR_800HZ 0
slicht 0:b3305e3c9e73 31 #define ODR_400HZ 1
slicht 0:b3305e3c9e73 32 #define ODR_200HZ 2
slicht 0:b3305e3c9e73 33 #define ODR_100HZ 3
slicht 0:b3305e3c9e73 34 #define ODR_50HZ 4
slicht 0:b3305e3c9e73 35 #define ODR_12_5HZ 5
slicht 0:b3305e3c9e73 36 #define ODR_6_25HZ 6
slicht 0:b3305e3c9e73 37 #define ODR_1_56HZ 7
slicht 0:b3305e3c9e73 38
slicht 0:b3305e3c9e73 39 // Init values
slicht 0:b3305e3c9e73 40 #define DEFAULT_FSR SCALE_2G
slicht 0:b3305e3c9e73 41 #define DEFAULT_ODR ODR_800HZ
slicht 0:b3305e3c9e73 42
slicht 0:b3305e3c9e73 43
slicht 0:b3305e3c9e73 44 // Class declaration
slicht 0:b3305e3c9e73 45 class MMA8452Q
slicht 0:b3305e3c9e73 46 {
slicht 0:b3305e3c9e73 47 public:
slicht 0:b3305e3c9e73 48 MMA8452Q(PinName sda, PinName scl, int addr);
slicht 0:b3305e3c9e73 49 ~MMA8452Q();
slicht 0:b3305e3c9e73 50 bool init();
slicht 0:b3305e3c9e73 51 uint8_t available();
slicht 0:b3305e3c9e73 52 void setScale(uint8_t fsr);
slicht 0:b3305e3c9e73 53 void setODR(uint8_t odr);
slicht 0:b3305e3c9e73 54 void standby();
slicht 0:b3305e3c9e73 55 void active();
slicht 0:b3305e3c9e73 56 float readX();
slicht 0:b3305e3c9e73 57 float readY();
slicht 0:b3305e3c9e73 58 float readZ();
slicht 0:b3305e3c9e73 59 uint8_t readRegister(uint8_t reg);
slicht 0:b3305e3c9e73 60 void writeRegister(uint8_t reg, uint8_t data);
slicht 0:b3305e3c9e73 61
slicht 0:b3305e3c9e73 62 private:
slicht 0:b3305e3c9e73 63 I2C m_i2c;
slicht 0:b3305e3c9e73 64 int m_addr;
slicht 0:b3305e3c9e73 65 int scale;
slicht 0:b3305e3c9e73 66 };
slicht 0:b3305e3c9e73 67
slicht 0:b3305e3c9e73 68 #endif