在基于STM32平台使用ADXL345测倾角时发现一些问题,之前用的是传感器购买时赠送的51程序,没有细究拿来就用的,在移植到stm32平台时发现测量时很不准。
这是数据处理代码:
//这是x轴
BUF[1],BUF[3]MBUF[5]分别是x,y,z的高位,判断正负后再进一步合值
void display_x()
{
int temp;
x=BUF[0];
if(BUF[1]&0x80)
{
BUF[1]=~BUF[1]+1;
LCD_ShowNum(92,170,0,1,16);
printf("此处x是负号");
}
else
LCD_ShowNum(92,170,1,1,16);
x=BUF[0]+(BUF[1]<<8);
K=(float) (x*3.9) ;
conversion(K);
LCD_ShowNum(108,170,qian, 1,16);
LCD_ShowNum(124,170,bai,1,16);
LCD_ShowNum(140,170,shi,1,16);
LCD_ShowNum(156,170,ge,1,16);
}
//这是角度显示函数,测得的是与z轴夹角
void display_Angle(void)
{
int angle;
angle[0]= (int)(atan2((double)K,(double)Q) * (180 / 3.14159265)); // 与z的夹角
conversion(angle[0]); //计算数据和显示
LCD_ShowNum(108,230,qian, 1,16);
LCD_ShowNum(124,230,bai,1,16);
LCD_ShowNum(140,230,shi,1,16);
LCD_ShowNum(156,230,ge,1,16);
}
现在的问题是数据能够传过来,但是显示的值有问题,角度测量相当的不准备,没什么规律可循。想问下有没做过这的,传感器发送过来的数据格式是怎样的?上述我的处理方法错在什么地方了 |