掌控板制作水平仪【三轴加速度传感器系列1】

2020-02-197965
精华项目
AI 快速预览详细 收起
本文介绍了如何使用掌控板自带的3轴加速度传感器制作一个水平仪。首先,绘制一个空心圆和一个实心小球,然后将加速度数据映射到屏幕坐标,实现直观的倾斜角度显示。文章详细介绍了每个步骤,并提供了改进后的代码。适合STEM教育场景,帮助孩子理解物理原理并动手实践。
掌控板制作水平仪【三轴加速度传感器系列1】图1      
      水平仪的水准管是由玻璃制成,水准管内壁是一个具有一定曲率半径的曲面,管内装有液体,当水平仪发生倾斜时,水准管中气泡就向水平仪升高的一端移动,从而确定水平面的位置。水准管内壁曲率半径越大,分辨率就越高,曲率半径越小,分辨率越低,因此水准管曲率半径决定了水平仪的精度。
      这是传统水平仪的原理。作为一名创客怎么能没有自己的水平仪呢?于是乎就自己制作一个。
      掌控板自带3轴加速传感器。我们可以直接利用它来制作一个水平仪。我们先看看效果吧。
1. 认识掌控板的3轴
掌控板制作水平仪【三轴加速度传感器系列1】图2

掌控板平放在桌面上,正面朝上,屏幕沿金手指方向为X轴正方向,屏幕沿左边光线传感器方向为Y轴正方向,屏幕沿上方为Z轴正方向。
三轴加速度的测量范围为 -2g 到 +2g 之间。

2. 在屏幕中心位置(64,32)画出一个空心圆,半径为5
掌控板制作水平仪【三轴加速度传感器系列1】图3
掌控板制作水平仪【三轴加速度传感器系列1】图4

3. 在空心圆内部画出一个实心圆,当作一个实心小球,半径3
掌控板制作水平仪【三轴加速度传感器系列1】图5
掌控板制作水平仪【三轴加速度传感器系列1】图6
也就是说,当实心小球所处的位置是x=64,y=32的时候,刚好处于屏幕正中间,处于空心圆内。

4. 增加两个变量xx、yy,表示当前小球的位置,把x轴加速度映射到OLED显示屏的y方向(0-63),把y轴加速度映射到OLED显示屏的x方向(0-127),与x轴和y轴加速传感器联系起来。
掌控板制作水平仪【三轴加速度传感器系列1】图7
由于三轴加速传感器的范围是0-1,是小数,映射后依然可能会出现小数。因此,需要对映射的结果取整。
掌控板制作水平仪【三轴加速度传感器系列1】图8
再把取整后的结果依次和显示屏实心小球的x轴坐标和y轴坐标对应起来
掌控板制作水平仪【三轴加速度传感器系列1】图9
这里特别解释一下,为什么小球的X轴坐标为何对应Y轴加速度,而小球的Y轴坐标对应X轴坐标?如下图所示,X轴加速度正方向,而这个方向是屏幕的y方向;Y轴加速度正方向,而这个方向是屏幕的x方向。
掌控板制作水平仪【三轴加速度传感器系列1】图10
5. 当小球的xx坐标为64,yy坐标为32时,小球刚好在屏幕正中间,此时掌控板处于平衡状态,3颗RGB灯亮起红色光,并且蜂鸣器报警提示。
掌控板制作水平仪【三轴加速度传感器系列1】图11

6. 最后一直循环整个过程,使小球随着掌控板倾斜角度而滚动起来。

掌控板制作水平仪【三轴加速度传感器系列1】图12
初步效果视频。
额,等等,你以为这样子就完了吗?
NO。不是的。
还有几个问题:
1. 只有一个空心圆,一个小球(实心圆),界面不是很美观哈,也简单了点。
2. 你会发现小球移动到边界的时候会只见半边脸。哈哈哈。
3. 你会发现小球移动过程中,哪边低就移向哪边,而真正的水平仪是哪边高就移向哪边!
4. 映射在屏幕的范围,应该是0-63和0-127,上面我忘了修改过来。

因此,今天继续改进。
1. 增加水平、竖直方向的两根辅助直线。
掌控板制作水平仪【三轴加速度传感器系列1】图14
2. 改变映射范围,防止小球出边界。
    修改映射方向,改变小球随倾斜角度移动的方向。
掌控板制作水平仪【三轴加速度传感器系列1】图13
3. 再把比较完善的代码一起贴出来,大家一起交流。
掌控板制作水平仪【三轴加速度传感器系列1】图15







水平仪.zip

2.49 KB, 下载次数: 4241

水平仪改进.zip

2.93 KB, 下载次数: 4402

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(4)
想成为蟑螂恶霸
想成为蟑螂恶霸
来学习一下
gada888
gada888
挺实用的
常州-杨华
常州-杨华
学习一下
风悠扬0539
风悠扬0539
非常好非常牛啊
- 没有更多了 -