this is sample source of MMA8452
Fork of MMA8452 by
main.cpp
- Committer:
- matsu
- Date:
- 2012-11-28
- Revision:
- 0:904e837fccc5
- Child:
- 1:0c1dd02be97a
File content as of revision 0:904e837fccc5:
#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;
}
}
}
