accelerator

Committer:
wye11
Date:
Sat Jan 30 07:10:44 2016 +0000
Revision:
0:ffbc5d045774
accelerator ball

Who changed what in which revision?

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