|
先上代码
u8 adxl_init(void)
{
adxl_port_config(); //端口初始化
//最小初始化序列
adxl_writebyte(0x31,0x0B);
adxl_writebyte(0x2D,0x08);
adxl_writebyte(0x2E,0x80);
return ADXL_READY;
}
void adxl_get3axis(u16 *buf)
{
u8 i = 0;
if(!ADXL_GET_INT())
return;
i = adxl_readbyte(0x30);
ADXL_CS_ON(); //使能芯片
i = Spi1_SendReceiveByte(0xF2); // 起始地址 读指令 MB:多字节
//0xF2 = 0x32 | 0x80 | 0x40
for(i=0;i<6;i++)
buf = Spi1_SendReceiveByte(0xFF);
ADXL_CS_OFF(); //除能芯片
}
s16 adxl_getangle(u16 *buf, float *angle)
{
s16 angleXX = (buf[1]<<8) | buf[0];
s16 angleYY = (buf[3]<<8) | buf[2];
s16 angleZZ = (buf[5]<<8) | buf[4];
angle[0] = angleXX*3.9;
angle[1] = angleYY*3.9;
angle[2] = angleZZ*3.9;
}
处理到这个地方的时候发现,X轴总是多出-1g,任何姿态都是这个样子。
比如,按照手册上所述,水平向上的时候:
Xout = 0g Yout = 0g Zout = 1g
但是我的实际输出是:
Xout =-1g Yout = 0g Zout = 1g
X轴垂直指向上的时候,Xout达到-2g
不知道是哪里设置错了呢? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|