accelerometer library

Fork of MMA8452Q by Stephen Licht

Committer:
rsean10
Date:
Thu Dec 07 15:23:07 2017 +0000
Revision:
1:a63e41016132
Parent:
0:b3305e3c9e73
this works i think;

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
rsean10 1:a63e41016132 20 #define REG_CTRL_REG4 0X2D
rsean10 1:a63e41016132 21 #define FF_CONFIG 0X15
rsean10 1:a63e41016132 22 #define FF_THS 0X17
rsean10 1:a63e41016132 23 #define FF_COUNT 0X18
rsean10 1:a63e41016132 24 #define FF_SRC 0X16
rsean10 1:a63e41016132 25 #define REG_CTRL_REG5 0X2E
slicht 0:b3305e3c9e73 26
slicht 0:b3305e3c9e73 27 // WHO_AM_I check
slicht 0:b3305e3c9e73 28 #define FACTORY_ID 0x2A
slicht 0:b3305e3c9e73 29
slicht 0:b3305e3c9e73 30 // Scale definitions
slicht 0:b3305e3c9e73 31 #define SCALE_2G 2
slicht 0:b3305e3c9e73 32 #define SCALE_4G 4
slicht 0:b3305e3c9e73 33 #define SCALE_8G 8
slicht 0:b3305e3c9e73 34
slicht 0:b3305e3c9e73 35 // Data rates
slicht 0:b3305e3c9e73 36 #define ODR_800HZ 0
slicht 0:b3305e3c9e73 37 #define ODR_400HZ 1
slicht 0:b3305e3c9e73 38 #define ODR_200HZ 2
slicht 0:b3305e3c9e73 39 #define ODR_100HZ 3
slicht 0:b3305e3c9e73 40 #define ODR_50HZ 4
slicht 0:b3305e3c9e73 41 #define ODR_12_5HZ 5
slicht 0:b3305e3c9e73 42 #define ODR_6_25HZ 6
slicht 0:b3305e3c9e73 43 #define ODR_1_56HZ 7
slicht 0:b3305e3c9e73 44
slicht 0:b3305e3c9e73 45 // Init values
slicht 0:b3305e3c9e73 46 #define DEFAULT_FSR SCALE_2G
slicht 0:b3305e3c9e73 47 #define DEFAULT_ODR ODR_800HZ
rsean10 1:a63e41016132 48 #define DEFAULT_PIN 0X04
rsean10 1:a63e41016132 49 #define DEFAULT_THRESH 0x03
slicht 0:b3305e3c9e73 50
slicht 0:b3305e3c9e73 51
slicht 0:b3305e3c9e73 52 // Class declaration
slicht 0:b3305e3c9e73 53 class MMA8452Q
slicht 0:b3305e3c9e73 54 {
slicht 0:b3305e3c9e73 55 public:
slicht 0:b3305e3c9e73 56 MMA8452Q(PinName sda, PinName scl, int addr);
slicht 0:b3305e3c9e73 57 ~MMA8452Q();
slicht 0:b3305e3c9e73 58 bool init();
slicht 0:b3305e3c9e73 59 uint8_t available();
slicht 0:b3305e3c9e73 60 void setScale(uint8_t fsr);
slicht 0:b3305e3c9e73 61 void setODR(uint8_t odr);
slicht 0:b3305e3c9e73 62 void standby();
slicht 0:b3305e3c9e73 63 void active();
rsean10 1:a63e41016132 64 void freefall(uint8_t interrupt,uint8_t threshold);
slicht 0:b3305e3c9e73 65 float readX();
slicht 0:b3305e3c9e73 66 float readY();
slicht 0:b3305e3c9e73 67 float readZ();
slicht 0:b3305e3c9e73 68 uint8_t readRegister(uint8_t reg);
slicht 0:b3305e3c9e73 69 void writeRegister(uint8_t reg, uint8_t data);
slicht 0:b3305e3c9e73 70
slicht 0:b3305e3c9e73 71 private:
slicht 0:b3305e3c9e73 72 I2C m_i2c;
slicht 0:b3305e3c9e73 73 int m_addr;
slicht 0:b3305e3c9e73 74 int scale;
slicht 0:b3305e3c9e73 75 };
slicht 0:b3305e3c9e73 76
slicht 0:b3305e3c9e73 77 #endif