Page Title

第六课 在WU-Link中使用加速度计——自制水平仪模块与指令


2019-08-01 11:52:47

WU-Link主板上集成了一块加速度计,可以检测WU-Link在各个方向上收到的力。本课将利用这块板载的传感器,编写程序,让WU-Link成为可以检测姿态的水平仪。

 

模块与指令


要制作本课的范例作品,需要认识以下这些新的模块:

加速度计

加速度是速度变化量与发生这一变化所用时间的比值Δv/Δt,符号为a,如一个物体从静止状态开始,只在地球重力的作用下进行自由落体运动,10秒(s)后速度增加到98米每秒(m/s),那么物体所受到的重力加速度为:98m/s÷10s=9.8m/s2

生活中最常见的加速度便是重力加速度,符号为g。

加速度计就是能够检测到加速度值并转化、输出相应数值的传感器。在汽车安全系统、地震检测、游戏控制、佩带式智能设备等很多方面都有广泛的应用。

WU-Link在主板上集成的加速度计如下图所示,可以检测XYZ三个方向的加速度大小,任一方向数值输出范围:-8192~8192。


blob.png                          blob.png

 

因为加速度是描述物体速度变化快慢的物理量,一般人对其缺乏直观感受,而重力在人们的生活中无处不在,所以在描述一个物体受到的加速度时,会用“多少个重力加速度”来表达。如超音速战斗机加速时的加速度约为3.6个重力加速度,即3.6g。WU-Link加速度计在任一方向上的数值输出范围为±16g,即当数值为512时,为1g。

 

要制作本课的范例作品,还需要使用以下新的指令:

blob.png读板载加速度计指令:

属于板载类别指令;可以读取WU-Link在左右(X)、垂直(Y)、前后(Z)三个方向上的加速度数值,可以更加精确的获WU-Link的运动状态。

指令默认是读取按键“X”方向的值;可以单击打开下拉列表参数,从中选择“X”"Y""Z"这三个选项,选择读取

WU-Link在左右、垂直、前后这三个方向上的加速度数值。

blob.png检测到摇晃指令:

属于“板载”类别指令;可以检测WU-Link有没有被晃动。如果检测到晃动,输出值为“1”;否则为“0”。

 

 

作品制作


要制作水平仪,先要通过在WU-Link点阵屏上显示读板载加速度计指令的值,了解这个指令的使用方法;然后编写代码,让WU-Link变成一个能够检测水平状态的水平仪

 

第一步:在点阵屏上显示三个方向的加速度值

要用一个程序让点阵屏上显示三个方向的加速度值,可以设定不同的触发条件:

       1.  如果按下A按键时,显示X方向加速度值。

       2.  如果松开A按键且按下B按键时,显示Y方向加速度值。

          3.如果A和B两个按键都松开时,显示Z方向加速度值完整的程序代码如下图所示:

 

blob.png


试一试:

将上图所示代码编译后下载到WU-Link,然后按下表要求改变WU-Link的姿态,将点阵屏上显示的数值都记录下来。看一看,当WU-Link处于水平姿态时,三个方向的加速度值分别为多少?

 

blob.png 

 

 

第二步:创建变量并初始化

为了提高程序的可读性,创建三个变量分别存储三个方向的加速度值。

blob.png

blob.png

 

第三步:判断水平姿态

在理想状态下,当WU-Link处于一个绝对水平位置时,加速度值应该稳定不变,但是真实情况下,因为传感器测量的误差始终存在,显示的加速度值一直在一个误差范围内跳动。根据第一步测量的数值,可以得知当WU-Link处于水平状态是三个方向加速度值的误差范围。

如在第一步中检测到加速度值为:


blob.png


那么当WU-Link的X方向加速度值在以上范围内时,即处于水平姿态,代码如下:

blob.png

试一试:

将以上代码编译后下载到WU-Link,然后将WU-Link水平放置在桌面上,看看显示图案是否稳定为“√”,如果“√”和“×”交替显示的情况,程序应该如何修改

 

 

第四步:判断其他偏转姿态

当加速度值超出范围时,需要作出不同的图案,以提示此时WU-Link向哪个方向偏转。可以模仿水泡水平仪,如向右偏转的图案为:


blob.png


其他图案依此类推。

完整的主程序代码如下图所示:


blob.png

 


试一试:

同时向左下方向偏转点阵屏如何显示

 

拓展与思考


水平仪是利用WU-Link处于水平姿态时加速度值为某一特殊值制作的仪器,是否可以调整这一特殊值,使其成为测量角度的角度仪,程序改如何修改。