专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
MPU6050加速度在OLED显示问题
2019-07-20 21:10
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
6804
3
1127
MPU6050显示读取的三维加速度在OLED上显示的都是0
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-20 21:29
说明你代码有问题
加载中...
shallowd
2楼-- · 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]
加载中...
GS1101923161
3楼-- · 2019-07-21 01:57
如果六轴数据读取正常,那就是你OLED没调试清楚,自己模拟个数据慢慢调吧!
加载中...
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
STM32开发板免费用活动
7 个回答
stm32 处理 DHT11占用太多时间,大家程序是怎么设计的
8 个回答
分享一个STM32单片机做的离线编程器代码
9 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
[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]
一周热门 更多>