MPU6050加速度在OLED显示问题

2019-07-20 21:10发布

MPU6050显示读取的三维加速度在OLED上显示的都是0
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
shallowd
2019-07-20 23:33
不知道你是怎么算实际加速度值的。我算出来了。写了个计算加速度的函数,因为加速度量程初始化设置的是±2g,所以用寄存器里的加速度值除以16384,这个在6050datasheet有写,是灵敏度。我后面显示是显示1位整数,2位小数的。参考的例程。显示部分的代码也贴在后面。
[mw_shl_code=c,true]//计算实际加速度值
//accx,accy,accz为加速度原始值(16位带符号)
//ax,ay,az 为计算出来的加速度值,单位为100g
void MPU_Cal_Accelerometer(short *accx,short *accy,short *accz,float *ax,float *ay,float *az)
{
        *ax = (((double)*accx)/16384)*100;
        *ay = (((double)*accy)/16384)*100;
        *az = (((double)*accz)/16384)*100;       
}[/mw_shl_code]

[mw_shl_code=c,true]temp=ax;
                                if(temp<0)
                                {
                                        LCD_ShowChar(30+144,200,'-',16,0);                //显示负号
                                        temp=-temp;                //转为正数
                                }else LCD_ShowChar(30+144,200,' ',16,0);                //去掉负号
                                LCD_ShowNum(30+144+8,200,temp/100,1,16);                //显示整数部分            
                                LCD_ShowNum(30+144+24,200,temp%100,2,16);                //显示小数部分  
                                temp=ay;
                                if(temp<0)
                                {
                                        LCD_ShowChar(30+144,220,'-',16,0);                //显示负号
                                        temp=-temp;                //转为正数
                                }else LCD_ShowChar(30+144,220,' ',16,0);                //去掉负号
                                LCD_ShowNum(30+144+8,220,temp/100,1,16);                //显示整数部分            
                                LCD_ShowNum(30+144+24,220,temp%100,2,16);                //显示小数部分
                                temp=az;
                                if(temp<0)
                                {
                                        LCD_ShowChar(30+144,240,'-',16,0);                //显示负号
                                        temp=-temp;                //转为正数
                                }else LCD_ShowChar(30+144,240,' ',16,0);                //去掉负号
                                LCD_ShowNum(30+144+8,240,temp/100,1,16);                //显示整数部分            
                                LCD_ShowNum(30+144+24,240,temp%100,2,16);                //显示小数部分[/mw_shl_code]

一周热门 更多>