KXP84-2050だかのアレ
KXP84.cpp
- Committer:
- misodengaku
- Date:
- 2012-06-20
- Revision:
- 0:af16997a2d22
File content as of revision 0:af16997a2d22:
#include "mbed.h" #include "KXP84.h" void KXP84::init() { char cmd[1]; //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(); } void KXP84::get(int *x, int *y, int *z) { char data[6]; int dx,dy,dz; 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=(int)(( (dx - 2048) * 1.24)+0.5); //if (dy>2048) // *y=dy-2048; //else *y=(int)(( (dy - 2048) * 1.24)+0.5); //if (dz>2048) // *z=dz-2048; //else *z=(int)(( (dz - 2048) * 1.24)+0.5); }