App1_S5 / Mbed 2 deprecated APP3_Lab

Dependencies:   mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial

Fork of APP3_Lab by Jean-Philippe Fournier

Committer:
JayMcGee
Date:
Sat Sep 30 20:02:08 2017 +0000
Revision:
7:b054ce191070
A tester Lecture sensor

Who changed what in which revision?

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