thisone
Fork of MMA8451Q8 by
Revision 8:e7197838ba82, committed 2017-03-06
- Comitter:
- mturner5
- Date:
- Mon Mar 06 10:19:57 2017 +0000
- Parent:
- 7:7812354ef684
- Child:
- 9:79ca3a3ce1e7
- Commit message:
- revised
Changed in this revision
MMA8451Q8.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/MMA8451Q8.cpp Wed Feb 22 15:35:47 2017 +0000 +++ b/MMA8451Q8.cpp Mon Mar 06 10:19:57 2017 +0000 @@ -35,6 +35,8 @@ #define GSCALING 1024.0 +float gScaling[3] = {4095.0,2048.0,1024.0}; //scaling for acceleration? + MMA8451Q::MMA8451Q(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr) { // activate the peripheral uint8_t data[2] = {REG_CTRL_REG_1, 0x01}; @@ -48,27 +50,28 @@ readRegs(REG_WHO_AM_I, &who_am_i, 1); return who_am_i; } -void MMA8451Q::setGLimit() { - uint8_t data[2] = {REG_CTRL_REG_1, 0x00}; - writeRegs(data, 2); // put in standby - data[0] = XYZ_DATA_CFG; - data[1] = MAX_8G; +void MMA8451Q::setGLimit(int gSelect) { + uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; + gChosen = gSelect; + writeRegs(data, NUM_DATA); // put in standby + data[ADRESS_INDEX ] = XYZ_DATA_CFG; + data[DATA_INDEX] = gChosen; writeRegs(data, 2);// change g limit - data[0] = REG_CTRL_REG_1; - data[1] = 0x01; + data[ADRESS_INDEX ] = REG_CTRL_REG_1; + data[DATA_INDEX] = 0x01; writeRegs(data, 2); // make active } float MMA8451Q::getAccX() { - return (float(getAccAxis(REG_OUT_X_MSB))/GSCALING); + return (float(getAccAxis(REG_OUT_X_MSB))/GSCALING[gChosen]); } float MMA8451Q::getAccY() { - return (float(getAccAxis(REG_OUT_Y_MSB))/GSCALING); + return (float(getAccAxis(REG_OUT_Y_MSB))/GSCALING[gChosen]); } float MMA8451Q::getAccZ() { - return (float(getAccAxis(REG_OUT_Z_MSB))/GSCALING); + return (float(getAccAxis(REG_OUT_Z_MSB))/GSCALING[gChosen]); } void MMA8451Q::getAccAllAxis(float * res) { @@ -98,3 +101,20 @@ void MMA8451Q::writeRegs(uint8_t * data, int len) { m_i2c.write(m_addr, (char *)data, len); } + + void getAccAllAxis(float * res); + +int16_t getAccAxis(uint8_t addr); + + I2C m_i2c; + int m_addr; + int gChosen; + + void setGLimit(int gSelect); + void setStandbyMode(); + void setActiveMode(); + void readRegs(int addr, uint8_t * data, int len); + void writeRegs(uint8_t * data, int len); + +private: +