this is sample source of MMA8452
Fork of MMA8452 by
Diff: main.cpp
- Revision:
- 0:904e837fccc5
- Child:
- 1:0c1dd02be97a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Nov 28 16:55:32 2012 +0000
@@ -0,0 +1,71 @@
+#include "mbed.h"
+
+I2C i2c(p9,p10);
+Serial pc(USBTX, USBRX);
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+
+int main() {
+ led1 = 0;
+ led2 = 0;
+ led3 = 0;
+ char cmd[6];
+ char add[1];
+ char init[2];
+ add[0] = 0x01;
+ init[0] = 0x2A;
+ init[1] = 0x01;
+ int number=0;
+ i2c.frequency(40000);
+
+ wait(0.5);
+ //init
+ //set active mode
+ while(i2c.write(0x3A,init,2));
+ led1 = 1;
+ led2 = 1;
+ led3 = 1;
+
+ //get analog data
+ while(1) {
+ //send procedure
+ wait(0.07);
+ switch(number){
+ case 0:
+// i2c.start();
+ if(i2c.write(0x3A,add,1) == 0){
+ number++;
+ led1 = 1;
+ }else{
+ number=0;
+ led1 = 0;
+ led2 = 0;
+ led3 = 1;
+ }
+ break;
+ case 1:
+// i2c.start();
+ if(i2c.read(0x3A,cmd,6) == 0){
+ number++;
+ led2 = 1;
+ }else{
+ number=0;
+ led1 = 0;
+ led2 = 0;
+ led3 = 0;
+ }
+ break;
+ case 2:
+// pc.printf("\r cmd1 = %d,cmd2 = %d,cmd3 = %d ",((cmd[0]<<4)+(cmd[1]>>4)),((cmd[2]<<4)+(cmd[3]>>4)),((cmd[4]<<4)+(cmd[5]>>4)));
+ pc.printf("\r X = %d,Y = %d,Z = %d ",cmd[1],cmd[3],cmd[5]);
+ led3 = 1;
+ wait(0.5);
+ led1 = 0;
+ led2 = 0;
+ led3 = 0;
+ number=0;
+ break;
+ }
+ }
+}
