Funpack第六期-MAX32660和MPU6050实现水平仪
本设计使用第六期funpack的MAX32660板卡作为控制器,利用MPU6050采集xyz各轴上的加速度,计算传感器的xy平面与重力方向夹角
标签
Funpack参赛
MAX32660
mpu6050
大熊Bear
更新2021-03-31
2055

本设计使用第六期funpack的MAX32660板卡作为控制器,

利用MPU6050采集xyz各轴上的加速度,计算传感器的xy平面与重力方向夹角

Fqpy3bznPswmFoB6lL8cwwCezCLU

使用atan2, 分别计算xy轴合力与z轴方向的夹角,并转化为角度值:

x_angle=atan2(aacx,aacz)*180/3;
y_angle=atan2(aacy,aacz)*180/3;
x_angle = x_angle<-30?-30:x_angle>30?30:x_angle;
y_angle = y_angle<-30?-30:y_angle>30?30:y_angle;
OLED_DrawCircle((uint8_t)(64+y_angle),(uint8_t)(32+x_angle),5);
OLED_Refresh();

以上参考了网站上的水平仪项目代码。

本次作业另一个要求是,结合屏幕实现手表效果

屏幕上会显示一个半径5像素的点,随着电路板的倾斜方向运动

        sec = RTC_GetSecond();

        day = sec / SECS_PER_DAY;
        sec -= day * SECS_PER_DAY;

        hr = sec / SECS_PER_HR;
        sec -= hr * SECS_PER_HR;

        min = sec / SECS_PER_MIN;
        sec -= min * SECS_PER_MIN;
        OLED_ShowChar(10, 8, (char)(48+hr/10),24);
        OLED_ShowChar(20, 8, (char)(48+hr%10),24);
        OLED_ShowChar(30, 8, (char)(46+(sec%2?12:13)),24);
        OLED_ShowChar(40, 8, (char)(48+min/10),24);
        OLED_ShowChar(50, 8, (char)(48+min%10),24);

这段代码是获取系统RTC时间,计算出小时和分钟后显示在屏幕上,就完成了作业的第二个要求

心得:在参加了项目的培训和交流之后,熟悉了官方函数的使用,接下来的移植工作就是C语言的基础知识了。这次活动大家有热心交流,也加快了开发速度,总之能收获很多知识。

 

附件下载
b.zip
团队介绍
团队成员
大熊Bear
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号