Shengyuan Chu / MMA8452

Fork of MMA8452 by Craig Evans

Committer:
chushengyuan
Date:
Mon May 11 13:15:23 2015 +0000
Revision:
2:ca714556a07d
Parent:
0:df3b9e41edf3
Final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:df3b9e41edf3 1 /**
eencae 0:df3b9e41edf3 2 @file MMA8452.h
chushengyuan 2:ca714556a07d 3 @brief Header file containing member functions and variables.
chushengyuan 2:ca714556a07d 4 @brief Acknowledgements to Dr.Craig A. Evans's Library.
eencae 0:df3b9e41edf3 5 */
eencae 0:df3b9e41edf3 6
eencae 0:df3b9e41edf3 7 #ifndef MMA8452_H
eencae 0:df3b9e41edf3 8 #define MMA8452_H
eencae 0:df3b9e41edf3 9
eencae 0:df3b9e41edf3 10 // MMA8452 address is 0x1D by default (see EAGLE schematic of breakout - SA = 1)
eencae 0:df3b9e41edf3 11 #define MMA8452_W_ADDRESS 0x3A
eencae 0:df3b9e41edf3 12 #define MMA8452_R_ADDRESS 0x3B
eencae 0:df3b9e41edf3 13 // Register Descriptions - p18 datasheet
eencae 0:df3b9e41edf3 14 #define OUT_X_MSB 0x01
eencae 0:df3b9e41edf3 15 #define WHO_AM_I 0x0D
eencae 0:df3b9e41edf3 16 #define CTRL_REG1 0x2A
eencae 0:df3b9e41edf3 17 #define XYZ_DATA_CFG 0x0E
eencae 0:df3b9e41edf3 18
eencae 0:df3b9e41edf3 19 typedef struct Acceleration Acceleration;
eencae 0:df3b9e41edf3 20 struct Acceleration {
eencae 0:df3b9e41edf3 21 float x;
eencae 0:df3b9e41edf3 22 float y;
eencae 0:df3b9e41edf3 23 float z;
eencae 0:df3b9e41edf3 24 };
eencae 0:df3b9e41edf3 25
eencae 0:df3b9e41edf3 26 #include "mbed.h"
eencae 0:df3b9e41edf3 27
eencae 0:df3b9e41edf3 28 class MMA8452
eencae 0:df3b9e41edf3 29 {
eencae 0:df3b9e41edf3 30
eencae 0:df3b9e41edf3 31 public:
eencae 0:df3b9e41edf3 32 /** Create a MMA8452 object connected to the specified pins
eencae 0:df3b9e41edf3 33 *
eencae 0:df3b9e41edf3 34 * @param sdaPin - mbed SDA pin
eencae 0:df3b9e41edf3 35 * @param sclPin - mbed SCL pin
eencae 0:df3b9e41edf3 36 *
eencae 0:df3b9e41edf3 37 */
eencae 0:df3b9e41edf3 38 MMA8452(PinName sdaPin, PinName sclPin);
eencae 0:df3b9e41edf3 39
eencae 0:df3b9e41edf3 40 /** Initialise accelerometer
eencae 0:df3b9e41edf3 41 *
eencae 0:df3b9e41edf3 42 * Powers up the accelerometer, sets 100 Hz update rate and ±4g scale
eencae 0:df3b9e41edf3 43 */
eencae 0:df3b9e41edf3 44 void init();
eencae 0:df3b9e41edf3 45
eencae 0:df3b9e41edf3 46 /** Get values of acceleration
eencae 0:df3b9e41edf3 47 *
eencae 0:df3b9e41edf3 48 * Reads the x,y,z values in g's
eencae 0:df3b9e41edf3 49 * @returns an Acceleration structure with x,y,z members (float)
eencae 0:df3b9e41edf3 50 */
eencae 0:df3b9e41edf3 51 Acceleration readValues();
eencae 0:df3b9e41edf3 52
eencae 0:df3b9e41edf3 53
eencae 0:df3b9e41edf3 54 private:
eencae 0:df3b9e41edf3 55 void sendByteToRegister(char byte,char reg);
eencae 0:df3b9e41edf3 56 char readByteFromRegister(char reg);
eencae 0:df3b9e41edf3 57 void readBytesFromRegister(char reg,int numberOfBytes,char bytes[]);
eencae 0:df3b9e41edf3 58 void error();
eencae 0:df3b9e41edf3 59
eencae 0:df3b9e41edf3 60 public:
eencae 0:df3b9e41edf3 61
eencae 0:df3b9e41edf3 62 private: // private variables
eencae 0:df3b9e41edf3 63 I2C* i2c;
eencae 0:df3b9e41edf3 64 BusOut* leds;
eencae 0:df3b9e41edf3 65
eencae 0:df3b9e41edf3 66 };
eencae 0:df3b9e41edf3 67
eencae 0:df3b9e41edf3 68
eencae 0:df3b9e41edf3 69
chushengyuan 2:ca714556a07d 70 #endif