OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5303|回复: 4

MPU6050加速度在OLED显示问题

[复制链接]

3

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2015-10-22
在线时间
0 小时
发表于 2015-10-22 17:08:57 | 显示全部楼层 |阅读模式
5金钱
MPU6050显示读取的三维加速度在OLED上显示的都是0

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2015-10-22 22:08:23 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2016-7-13
在线时间
17 小时
发表于 2016-7-21 13:55:40 | 显示全部楼层
不知道你是怎么算实际加速度值的。我算出来了。写了个计算加速度的函数,因为加速度量程初始化设置的是±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]
回复

使用道具 举报

14

主题

219

帖子

0

精华

高级会员

Rank: 4

积分
598
金钱
598
注册时间
2014-4-14
在线时间
76 小时
发表于 2016-7-21 15:18:12 | 显示全部楼层
如果六轴数据读取正常,那就是你OLED没调试清楚,自己模拟个数据慢慢调吧!
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2019-9-14
在线时间
24 小时
发表于 2020-6-30 20:48:33 | 显示全部楼层
我也遇到了同样的情况  请问大哥解决了吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-1 05:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表