Library for driving the MMA8452 accelerometer over I2C

Dependents:   MMA8452_Test MMA8452_Demo Dualing_Tanks IMU-Controlled_MP3_Player ... more

Here is a simple example:

#include "mbed.h"
#include "MMA8452.h"

int main() {
   Serial pc(USBTX,USBRX);
   pc.baud(115200);
   double x = 0, y = 0, z = 0;

   MMA8452 acc(p28, p27, 40000);
   acc.setBitDepth(MMA8452::BIT_DEPTH_12);
   acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G);
   acc.setDataRate(MMA8452::RATE_100);
   
   while(1) {
      if(!acc.isXYZReady()) {
         wait(0.01);
         continue;
      }
      acc.readXYZGravity(&x,&y,&z);
      pc.printf("Gravities: %lf %lf %lf\r\n",x,y,z);
   }
}

An easy way to test that this actually works is to run the loop above and hold the MMA8452 parallel to the ground along the respective axis (and upsidedown in each axis). You will see 1G on the respective axis and 0G on the others.

Changes

RevisionDateWhoCommit message
21:a92a632a0cc7 2014-03-07 ashleymills Improved doxygen. default tip
20:d55e9d7eb17e 2014-03-07 ashleymills Independent read methods present.
19:4d6cd7140a71 2014-03-06 ashleymills Adding independent query methods;
18:27d839e6dc0e 2014-03-05 ashleymills Debugging enabled by default for convenience
17:6e4232c421c0 2014-03-05 ashleymills Cleaned up debug handling
16:d6dde2318edc 2014-03-05 ashleymills Added data ready query commands for each independent axes.
15:7620a11149b8 2014-03-05 ashleymills Removed crap from comments.
14:0602b45ca70f 2014-03-05 ashleymills Updated author priority to reflect work
13:4bd8b4cd479d 2014-03-05 ashleymills Has routines to read raw, counts, and gravity.
12:172540ff6b8b 2014-03-04 ashleymills Added basic raw reading back in after remake.
11:dfd1e0afcb7b 2014-03-04 ashleymills Started a major rewrite of this library.
10:ca9ba7ad4e94 2014-03-04 ashleymills Some minor changes
9:dfb0f6a7a455 2013-10-17 ashleymills super clean
8:89272163f395 2013-10-17 ashleymills made some simplifications
7:8aa5123d403f 2013-10-17 nherriot Fixing bug in write IIC methods -where register pointer was being reset to 0 as the write function was not doing a repeated 'start' for multiple register reads.... :-)
6:f6bde04bf8be 2013-10-17 ashleymills Cleaning some things.
5:b3d0abd97e55 2013-10-16 nherriot adding method for getting control reg 1.;
4:27aa3cd43234 2013-10-16 nherriot simplification on several methods.
3:ffb0b1650ca2 2013-10-16 nherriot mma8452 0.1 - basic functions supported. ; Still going under test.
2:66db0f91b215 2013-10-08 nherriot whoami tested and working
1:ef026bf28798 2013-10-08 nherriot adding device id method detection
0:bcf2aa85d7f9 2013-10-04 nherriot Initial commit fro mma8452