WU-Link主板上集成了一块加速度计,可以检测WU-Link在各个方向上收到的力。本课将利用这块板载的传感器,编写程序,让WU-Link成为可以检测姿态的水平仪。
模块与指令
要制作本课的范例作品,需要认识以下这些新的模块:
加速度计
加速度是速度变化量与发生这一变化所用时间的比值Δv/Δt,符号为a,如一个物体从静止状态开始,只在地球重力的作用下进行自由落体运动,10秒(s)后速度增加到98米每秒(m/s),那么物体所受到的重力加速度为:98m/s÷10s=9.8m/s2。
生活中最常见的加速度便是重力加速度,符号为g。
加速度计就是能够检测到加速度值并转化、输出相应数值的传感器。在汽车安全系统、地震检测、游戏控制、佩带式智能设备等很多方面都有广泛的应用。
WU-Link在主板上集成的加速度计如下图所示,可以检测X、Y、Z三个方向的加速度大小,任一方向数值输出范围:-8192~8192。
因为加速度是描述物体速度变化快慢的物理量,一般人对其缺乏直观感受,而重力在人们的生活中无处不在,所以在描述一个物体受到的加速度时,会用“多少个重力加速度”来表达。如超音速战斗机加速时的加速度约为3.6个重力加速度,即3.6g。WU-Link加速度计在任一方向上的数值输出范围为±16g,即当数值为512时,为1g。
要制作本课的范例作品,还需要使用以下新的指令:
“读板载加速度计”指令:
属于“板载”类别指令;可以读取WU-Link在左右(X)、垂直(Y)、前后(Z)三个方向上的加速度数值,可以更加精确的获取WU-Link的运动状态。
指令默认是读取按键“X”方向的值;可以单击打开下拉列表参数,从中选择“X”、"Y"、"Z"这三个选项,选择读取
WU-Link在左右、垂直、前后这三个方向上的加速度数值。
“检测到摇晃”指令:
属于“板载”类别指令;可以检测WU-Link有没有被晃动。如果检测到晃动,输出值为“1”;否则为“0”。
作品制作
要制作“水平仪”,先要通过在WU-Link点阵屏上显示“读板载加速度计”指令的值,了解这个指令的使用方法;然后编写代码,让WU-Link变成一个能够检测水平状态的“水平仪”。
第一步:在点阵屏上显示三个方向的加速度值
要用一个程序让点阵屏上显示三个方向的加速度值,可以设定不同的触发条件:
1. 如果按下A按键时,显示X方向加速度值。
2. 如果松开A按键且按下B按键时,显示Y方向加速度值。
3.如果A和B两个按键都松开时,显示Z方向加速度值。 完整的程序代码如下图所示:
试一试:
将上图所示代码编译后下载到WU-Link,然后按下表要求改变WU-Link的姿态,将点阵屏上显示的数值都记录下来。看一看,当WU-Link处于水平姿态时,三个方向的加速度值分别为多少?
第二步:创建变量并初始化
为了提高程序的可读性,创建三个变量分别存储三个方向的加速度值。
第三步:判断水平姿态
在理想状态下,当WU-Link处于一个绝对水平位置时,加速度值应该稳定不变,但是真实情况下,因为传感器测量的误差始终存在,显示的加速度值一直在一个误差范围内跳动。根据第一步测量的数值,可以得知当WU-Link处于水平状态是三个方向加速度值的误差范围。
如在第一步中检测到加速度值为:
那么当WU-Link的X方向加速度值在以上范围内时,即处于水平姿态,代码如下:
试一试:
将以上代码编译后下载到WU-Link,然后将WU-Link水平放置在桌面上,看看显示图案是否稳定为“√”,如果“√”和“×”交替显示的情况,程序应该如何修改
第四步:判断其他偏转姿态
当加速度值超出范围时,需要作出不同的图案,以提示此时WU-Link向哪个方向偏转。可以模仿水泡水平仪,如向右偏转的图案为:
其他图案依此类推。
完整的主程序代码如下图所示:
试一试:
当同时向左下方向偏转,点阵屏如何显示?
拓展与思考
水平仪是利用WU-Link处于水平姿态时加速度值为某一特殊值制作的仪器,是否可以调整这一特殊值,使其成为测量角度的角度仪,程序改如何修改。