掌控板仿真电子沙漏
2022-06-14陈新龙
陈新龙
沙漏也叫作沙钟,是一种古老的时间测量装置。一般由两个玻璃球和一个狭窄的连接管道组成的。沙子从充满了沙子的上部玻璃球穿过狭窄的管道流入下部玻璃球,每次流完所需的时间是相对固定的,这样一个沙漏就可以对应一个固定的时间值了。影响时间的因素包括填充物的多少、玻璃球内壁的曲线形状、颈部管道的宽度、填充物的类型和质量等因素。
我们利用掌控板的仿真功能,一起来制作一个仿真版的掌控板电子沙漏吧(图1)。
在利用掌控板编写电子沙漏程序代码前,我们需要明确几个知识点。
掌控板屏幕的分辨率是128*64,显示分辨率就是屏幕上显示的像素点个数,一个汉字要占用12*16个像素,一个英文占用8*16个像素。按照这个屏幕分辨率,长度是128,128/12=10.67,也就是一排最多显示10个汉字。高度是64,64/16=4,也就是最多显示4排,也就是一屏最多40个汉字。同样最多可以显示4排英文,共64个字母(图2)。
正切值是指直角三角形中,某一锐角的对边与另一相邻直角边的比值,tanα=b/a。
对于任意一个实数x,都对应着唯一的角,而这个角又对应着唯一确定的正切值tanx,按照这个对应法则建立的函数称为正切函数。正切是tanα=b/a,一个角的正切值永远是不变的(图3)。
最后需要了解的是掌控板的三轴(X、Y、Z)加速度,由于掌控板内置有加速度传感器,能够测量由于重力引起的加速度,我们可以利用mPython软件仿真模拟掌控板的运动过程。X:向前和向后倾斜,Y:向左和向右倾斜,Z:上下翻转。由于电子沙漏只需要使用到上下翻转我们便需要用到Z轴加速度。
以上这些便是我们制作电子沙漏需要用到的知识点,理解透彻之后,我们可以动手开始编写代码程序了。我们需要先确定沙漏的外形外貌以及漏沙的过程,如图3所示。在掌控板界面中我们绘制了上下两个相对的等腰三角形,确定五个点的坐标:左上(0,0)、右上(127,0)、左下(0,63)、右下(127,63)和中心(63,31)。
确定角α的正切值,就是tanα=32/64=0.5,由于整个大三角形是等腰三角形,所以它的对角正切值也就是0.5,当Y等于1时,X就等于2,这样可以把所有三角形的三个顶点坐标推算出来(图4)。
通過mPython软件进行代码的编写,首先绘制两条对角线形成一个X形状,这样上下就会形成两个三角形,其次通过循环对两个三角形中的内容进行填充,通过循环的方式给两个三角形(两部分主要是沙漏上半部分和沙漏下半部分)进行绘制填充,图4给大家提供了掌控板的Z轴加速度为正数时电子沙漏成正立变化关系图,当掌控板的Z轴加速度为负数的时候,电子沙漏成倒立关系,小陈老师已经列出沙漏正立关系变化图,看看聪明的你能不能也表示出倒立关系图呢(图5)。
具体代码如图6:
通过掌控板的仿真工具我们完成了沙漏的计时过程,效果还是非常逼真的,小陈老师这里追加一个思考题,如果想控制沙漏滴漏的过程时长为1分钟,该如何实现此效果呢?聪明的你快来动手尝试吧。期待你们能够给我带来惊喜。