Dependencies:
TextLCD
mbed
main.cpp
- Committer:
- esmiwa
- Date:
- 2012-06-17
- Revision:
- 0:bc64cc811377
File content as of revision 0:bc64cc811377:
#include "mbed.h"
#include "TextLCD.h"
// Accelerometer KXP-84 I2C Mode Register
//#define X_H 0x00
//#define X_L 0x01
// slave adress 0011 000X X: 0 send 1 receve
DigitalOut reset(p11);
DigitalIn ff(p12);
DigitalIn mot(p13);
DigitalOut sign(LED1);
TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, e, d4-d7
I2C i2c(p9, p10); // sda, scl
int main() {
char cmd[1];
char data[6];
int x,y,z;
int dx,dy,dz;
//reset=0;
i2c.frequency(400000);
//CTRL_REGB
i2c.start();
wait_us(1);
i2c.write(0x30);
wait_us(1);
*cmd=0x06;
i2c.write(0x0B,cmd,1);
wait_us(1);
i2c.stop();
//CTRL_REGC
i2c.start();
wait_us(1);
i2c.write(0x30);
wait_us(1);
*cmd=0x00;
i2c.write(0x0A,cmd,1);
wait_us(1);
i2c.stop();
//FF_INT
i2c.start();
wait_us(1);
i2c.write(0x30);
wait_us(1);
*cmd=0x14;
i2c.write(0x06,cmd,1);
wait_us(1);
i2c.stop();
//FF_DELAY
i2c.start();
wait_us(1);
i2c.write(0x30);
wait_us(1);
*cmd=0x14;
i2c.write(0x07,cmd,1);
wait_us(1);
i2c.stop();
//MOT_INT
i2c.start();
wait_us(1);
i2c.write(0x30);
wait_us(1);
*cmd=0x4D;
i2c.write(0x08,cmd,1);
wait_us(1);
i2c.stop();
//MOT_DELAYC
i2c.start();
wait_us(1);
i2c.write(0x30);
wait_us(1);
*cmd=0x14;
i2c.write(0x09,cmd,1);
wait_us(1);
i2c.stop();
//data_OUT
lcd.locate(0,0);lcd.printf(" x y z");
while(1){
i2c.start();
wait_us(1);
i2c.write(0x30);
wait_us(1);
i2c.write(0x00);
wait_us(1);
i2c.read(0x30,data,6);
wait_us(1);
i2c.stop();
dx=data[0]<<4 | data[1]>>4;
dy=data[2]<<4 | data[3]>>4;
dz=data[4]<<4 | data[5]>>4;
if(dx>2048)x=dx-2048;
else x=dx;
if(dy>2048)y=dy-2048;
else y=dy;
if(dz>2048)z=dz-2048;
else z=dz;
lcd.locate(0,1);;lcd.printf("%5d%5d%5d",x,y,z);
wait_ms(10);
}
}