Page Title

第五课 在WU-Link中使用电子罗盘——指南针来了


2019-08-01 11:48:06

要是你在野外迷了路是我们所熟知的一篇小学课文,课文中介绍了四种天然的指南针,除此之外,大自然还有一种更为重要的指南针”——地球的磁场。本课我们将学习如何使用WU-Link内置的电子罗盘,利用地球磁场制作   指南针,让WU-Link也有指示方向的功能。

 

模块与指令


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

电子罗盘

罗盘也叫做指南针、司南,是中国古代四大发明之一。它能够利用地球磁场来指示方向,在航海中的应用非常广泛,可以说哥伦布到达美洲大陆、麦哲伦环球航行成功都离不开罗盘的帮助。

传统的罗盘相对都比较大。随着电子技术的发展,使用磁阻传感器可以生产出非常小巧的电子罗盘,WU-Link内部的电路板上就集成了一块电子罗盘芯片(如下图所示),使得WU-Link也具有识别方向的功能。


blob.png

 

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

校准板载指南针指令:blob.png


 

属于点阵屏类别指令;使用这个指令可以校准板载的电子罗盘。

由于地球磁场非常微弱,因此电子罗盘容易受到各种电子产品的干扰。为了提高数据准确性,电子罗盘在使用前一般都需要校准,让电子罗盘的数值更加准确。

 

读板载指南针角度指令:blob.png

属于点阵屏类别指令;使用这个指令可以读取板载电子罗盘的角度值。所读取数值的范围是(0-360),将WU-

Link正面向上摆放,所读取的角度值和方向之间的关系是:“0”正北方、“90”正东方、“180”——正南方、“270”——正西方。

 

作品制作


要制作指南针,需要先运行校准指令,校准板载的电子罗盘;然后可以在点阵屏上直接显示WU-Link所指示方向的角度值,也可以在点阵屏上显示表示方向的字母。

 

第一步:校准板载电子罗盘

电子罗盘使用之间必须先进行校准。由于校准程序只需要在程序一开始的时候运行一次,因此可以将校准板载指南针指令作为初始化指令。

电子罗盘的校准过程需要手动完成,为了让校准过程操作更加明确,可以在校准板载指南针指令前面添加点阵

清除指令和点阵屏显示文本指令,修改点阵屏显示文本指令的参数为“Go!”;在校准板载指南针指令后面再添加点阵屏清除指令和点阵屏显示文本指令,修改第二个点阵屏显示文本指令的参数为“OK”。这样运行校准指令之前会有提示开始校准程序,完成后也有提示已经完成校准。

具体初始化程序代码如下图所示:

blob.png

WU-Link电子罗盘校准操作可以按以下步骤操作:

1.  运行上图所示的校准程序。

2.  程序运行以后,点阵屏会显示“GO!”提示文本,这时让WU-Link上会出现一个圆圈随后消失,拿着WU-Link旋转使刚刚出现圆圈上的点再次点亮。

3.  当点阵屏校准圆圈所出现的点再次点亮,点阵屏显示“OK”时,表明电子罗盘校准完成。


 

想一想:

除了以上介绍的校准提示方法,想一想,你还可以使用什么方法提示操作者开始校准、完成校准?

 

第二步:在点阵屏上显示方向角度值

电子罗盘校准完成后,就可以用它来指示方向。一般可以采用在点阵屏上显示方向角度值的形式指示方向。具体可以按以下步骤操作:

1.  点阵屏类别中的点阵屏清除点阵屏显示数指令拖动到编程区,与默认的重复执行指令组合,将板  类别中的读板载指南针角度指令拖动到点阵屏显示数指令的参数位置,作为它的参数。

2.  控制类别中的延时指令拖动组合到点阵屏显示数指令的下方,修改它的参数值为“200”毫秒。具体的主程序代码如下图所示:


blob.png

试一试:

WU-Link从北面开始,顺时针或者逆时针旋转,观察点阵屏上显示的角度值,你发现有什么规律?

 

第三步:在点阵屏上显示方向字母

WU-Link电子罗盘显示方向的角度值按顺时针方向从0度到360度依次递增。正北方是0度、正东方是90度、正南方180度、正西方是270度(如下图所示)。


blob.png


WU-Link上显示方向的角度值并不直观,还可以采用显示四个方向英文字母的方式:E(东)、S(南)、

W(西)、N(北)。

要在点阵屏上显示这些表示方向的字母,首先需要创建变量保存角度值,然后根据变量值进行判断、显示相应的字母。具体可以按以下步骤操作:

1.  单击变量类别中的创建变量按钮,在打开的新建变量对话框中,输入需要创建的变量名称Angle,最后单  确定按钮完成变量创建。

2.  变量创建完成后,还需要初始化。将变量类别中的声明变量类型并赋值指令拖动到编程区,组合到原有初始化指令的下方。确认声明变量类型并赋值指令所声明的变量名称是Angle,类型为整数

3.  数学与逻辑类别中的数值指令拖动组合到声明变量类型并赋值指令右边,将所创建的变量" Angle "赋值“0”

完整的初始化程序代码如下图所示:

blob.png

 

4.  变量类别中的赋值指令拖动组合到默认的重复执行指令里,确认指令第一个参数是Angle变量,再板载类别中的读板载指南针Angle指令拖动组合到赋值指令最后一个参数的位置,作为它的参数。

    1564631245283701.png

    5.  控制类别中的有条件执行指令拖动组合到赋值指令的下方;单击指令左上角的设置按钮,在打开的设置窗口中,将左边的否则如果图标拖动两个组合到右边如果图标的下方,再拖动左边的否则图标、组合到右边否则如果图标的下方(如下图所示);设置完成后,再次单击指令左上角的设置按钮关闭设置窗口

6.  数学与逻辑类别中的逻辑关系指令作为有条件执行指令的条件,确认它是默认的逻辑关系;再添加  两个逻辑比较指令作为逻辑关系指令的两个参数,设置第一个逻辑比较指令为Angle变量“>”“45”,第二    个逻辑比较指令为Angle变量“≤”“135”

7.  点阵屏类别中的点阵屏显示文本指令拖动组合到有条件执行指令的执行位置,修改这个指令的文本参  数为“E”

8.  右键单击有条件执行指令的条件——“逻辑关系指令,在打开的右键菜单中选择复制选项,将复制的逻辑  关系指令拖动组合到有条件执行指令第一个否则如果的条件位置,修改这个指令第一个逻辑比较指令     为Angle变量“>”“135”,第二个逻辑比较指令为Angle变量“≤”“225”

9.  再次单击复制逻辑关系指令、添加到有条件执行指令第二个否则如果的条件位置,修改这个指令第一  逻辑比较指令为Angle变量“>”“225”,第二个逻辑比较指令为Angle变量“≤”“315”

10.   复制三个点阵屏显示文本指令,添加到两个否则如果的执行位置,以及最后的否则的执行位置;依次修  改这个三个指令的文本参数为“S”“W”“N”

 

blob.png

试一试:

以上程序只能判断、显示四个方向;能不能修改程序,再增加东南西南西北东北这四个方向的判断、显示?

 

拓展与思考


用角度值指示方向这种方法比较精确,可以准确得知方向的数值;用字母指示方向这个方法比较直观,能够马上知道当前的方向。能不能编写一个兼顾这两种方法的程序,用按键根据需要切换显示。