【编程学习】用掌控板做个好玩的水平仪

2020年8月12日 10 : 43

水平仪测量小角度的常用量具。传统的水平仪水准管是由玻璃管制成,管内装有液体和气泡,当水平仪发生倾斜时,水准管中气泡就向高的一端移动,从而确定水平面的位置。水准管内壁曲率半径决定了水平仪的精度,曲率半径越大分辨率越高,曲率半径越小分辨率越低。今天我们用掌控板制作一个精准的电子水平仪(如图1)。

水平仪

掌控板平放在桌面上,正面朝上,屏幕沿金手指方向为X轴正方向,屏幕沿左边光线传感器方向为Y轴正方向,屏幕沿上方为Z轴正方向(如图2)。

为了增加实验的准确性和直观性,我们先来绘制水平仪的界面部分。以十字线和同心圆的图形作为辅助界面,先绘制两条相交直线,确定起点位置和终点位置就可以的准确画出来(如图3)。

然后绘制三个空心圆,绘制圆时要选择空心圆,确定相同的圆心的坐标和不同的半径。这三个同心圆的目的是为了测试的时候能够直观的测试水平移动的位置和范围(如图4)。

完成了辅助界面后,要绘制水平仪中心的实心圆球,这里我们将学到了一个新的知识:映射。在数学里,映射指两个元素的集之间元素相互"对应"的关系,只要给出元素集的上下限,映射函数自动就可以返回映射值。

我们设置了两个映射分别为XX和YY,对应实心圆球的圆心坐标位置,映射的是X和Y轴的加速度并且给它规定了读取的范围和映射后的范围。

为了方便我们观察水平平面的偏移,设置实心圆的半径长度小于内圈的空心圆的半径,否则就被覆盖了(如图5)。

如何能提示我们的水平仪是处于平衡位置呢?只要实心圆的XX的坐标为64,YY坐标为32时,也就是实心圆正好在屏幕正中间的位置,此时掌控板就是处于平衡的状态了,3颗RGB灯全部亮起为红色,并且蜂鸣器报警提示。否则的话灯灭,声音器也消失(如图6)。

水平仪制作过程是有一定的难度的,首先要确定好坐标位置,并且要掌握映射的技巧,在前两期制作测光仪时也用到了映射,你可以体会两者之间的异同。

源代码(如图7)。



分享到: