OpenEdv-开源电子网

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

例程中获取mpu6050温度部分的代码是否有错误?

[复制链接]

17

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2021-1-19
在线时间
56 小时
发表于 2021-3-2 17:29:42 | 显示全部楼层 |阅读模式
5金钱
main函数中while循环里面这一段,temp获得的是温度原始数据放大100倍后的数据,我思考了下,觉得显示小数部分LCD_ShowNum函数中的参数不该是temp%10,而应该是temp%100

temp=MPU_Get_Temperature();        //得到温度值
MPU_Get_Accelerometer(&aacx,&aacy,&aacz);        //得到加速度传感器数据
MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);        //得到陀螺仪数据
if(report)mpu6050_send_data(aacx,aacy,aacz,gyrox,gyroy,gyroz);//用自定义帧发送加速度和陀螺仪原始数据
if(report)usart1_report_imu(aacx,aacy,aacz,gyrox,gyroy,gyroz,(int)(roll*100),(int)(pitch*100),(int)(yaw*10));
             if((t%10)==0)
                        {
                                if(temp<0)
                                {
                                        LCD_ShowChar(30+48,200,'-',16,0);                //显示负号
                                        temp=-temp;                //转为正数
                                }else LCD_ShowChar(30+48,200,' ',16,0);                //去掉负号
                                LCD_ShowNum(30+48+8,200,temp/100,3,16);                //显示整数部分            
                                LCD_ShowNum(30+48+40,200,temp%10,1,16);                //显示小数部分

最佳答案

查看完整内容[请看2#楼]

可以写个小程序验证下你的猜测,直接用在线编译器打印就很清楚了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3879
金钱
3879
注册时间
2017-3-7
在线时间
1692 小时
发表于 2021-3-2 17:29:43 | 显示全部楼层
龙的传人98 发表于 2021-3-3 10:34
这样子吗?我还没想通,
例如temp得到原始温度53.54度的100倍5354
那么按例程最后显示小数部分5354%100 ...

可以写个小程序验证下你的猜测,直接用在线编译器打印就很清楚了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-3-3 01:49:19 | 显示全部楼层
代码没问题,你的想法有问题
回复

使用道具 举报

17

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2021-1-19
在线时间
56 小时
 楼主| 发表于 2021-3-3 10:34:32 | 显示全部楼层
正点原子 发表于 2021-3-3 01:49
代码没问题,你的想法有问题

这样子吗?我还没想通,
例如temp得到原始温度53.54度的100倍5354
那么按例程最后显示小数部分5354%100得到的不是4吗?可正确的小数点后一位不应该是5吗?

所以按我的想法是5354先除以10,得到535,再用535%10,得到5,这才是小数点后一位,不知道是我想法的哪里出了问题呢
回复

使用道具 举报

17

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2021-1-19
在线时间
56 小时
 楼主| 发表于 2021-3-3 15:51:51 | 显示全部楼层
有人能帮忙解答一下吗
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1481
注册时间
2020-8-19
在线时间
336 小时
发表于 2021-3-4 18:54:07 | 显示全部楼层
单单从代码的角度看,如果是读取一个原始数据3651,那么根据这个代码处理出来的确是36.1,但是这个要关注一下寄存器那里,看看是不是模块要求本身就要直接读取最后一位作为小数的
回复

使用道具 举报

17

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2021-1-19
在线时间
56 小时
 楼主| 发表于 2021-3-5 21:44:48 | 显示全部楼层
a5820736 发表于 2021-3-2 17:29
可以写个小程序验证下你的猜测,直接用在线编译器打印就很清楚了

最近干别的事,差点忘了这个帖子,试了,的确是原子的代码有问题,其实不用试,想想也知道,我把想法说得很清楚了
回复

使用道具 举报

17

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2021-1-19
在线时间
56 小时
 楼主| 发表于 2021-3-5 21:45:37 | 显示全部楼层
正点原子 发表于 2021-3-3 01:49
代码没问题,你的想法有问题

代码有问题,你的想法有问题
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2019-5-29
在线时间
13 小时
发表于 2021-4-10 22:55:53 | 显示全部楼层
正点原子 发表于 2021-3-3 01:49
代码没问题,你的想法有问题

原子哥 那个MPU6050的模块 MINI板的例程有吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 23:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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