dfsd

Committer:
lukeamlicke
Date:
Wed Apr 01 15:03:43 2020 +0000
Revision:
0:6285eaac7766
ssss

Who changed what in which revision?

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