数码管也叫做LED数码管,主要用来显示数字。由于它价格便宜、使用简单,在日常生活中应用非常普遍。本课我们将使用数码管和按键,为爱做烘焙的妈妈制作一个定时器,帮助她更加精确的掌握时间。
要制作本课的范例作品,需要使用以下新的硬件模块:
WULink-NOVA入门套件中包含1个数码管模块,它最多可以显示由四个数字组成的数,所以叫做“四位数码管”(如下图3-1所示)。数码管的每个数都是由八段LED组成,其中七段LED用于显示数字,第八段在数字的右下角,用于显示小数点。
![1576139145258952.png blob.png](/ueditor/php/upload/image/20191212/1576139145258952.png)
WULink-NOVA入门套件中包含2个单按键模块,可以作为开关使用(如上图3-2所示)。按键有“按下”和“弹起”两种状态。默认状态是“弹起”;当用手指按住按键帽往下按、并且保持不动的时候,就处于“按下”状态;松开手指,按键又会重回“弹起”状态。
要制作本课的范例作品,还需要使用以下新的指令:
![1576139161466145.png blob.png](/ueditor/php/upload/image/20191212/1576139161466145.png)
使用这个指令可以读取指定数字口的输出值。指令默认是数字口“S0”。通过单击下拉列表,可以选择S0—S3这4个数字端口、A0—A3这4个模拟端口(这些模拟端口具备数字端口功能,可以当作数字端口使用)。
![1576139180526855.png blob.png](/ueditor/php/upload/image/20191212/1576139180526855.png)
使用这个指令可以设置指定端口数码管显示指定的数值。指令默认是“C1”端口、“整数”类型、显示内容是“1234”。通过单击下拉列表,可以选择C1、M2这2个端口;“整数”、“小数”这些数值类型;需要显示的数值可以在参数框中输入。
使用这个指令可以清除指定端口数码管上显示的内容。指令默认是“C1”端口。通过单击下拉列表,可以选择C1、M2这2个端口。
要制作本课的范例作品,可以按以下步骤先连接硬件、连接网络,然后进入“好好搭搭”网站编写、调试、编译、下载程序。
首先将1根白色连接线一头插入按键模块的接口,另一头插入主控板的“S0”端口;再用1根红色连接线一头插入数码管模块的接口,另一头插入主控板的“C1”端口;将电池插入电源接口(如下图3-3所示);接着打开电源开关,等待主控板连接网络成功。
![1576139207397742.png blob.png](/ueditor/php/upload/image/20191212/1576139207397742.png)
图3-3 “送给妈妈的定时器”范例作品硬件连接图
打开浏览器,登录“好好搭搭”网站;单击网站上方的“创作”按钮,在“无线编程”网页中选择“WULink-NOVA”模板,进入“WULink-NOVA”编程设计页”。
在“WULink-NOVA编程设计页”中单击“显示器”指令类别,找到“设置数码管显示”指令,将它与“重复执行”指令组合;将这段代码编译后下载到主控板上,就会在数码管上显示默认的“1234”。
| 修改“设置数码管显示”指令参数,使得数码管分别显示: ² 一个你所喜欢的、四位以内的数; ² 一个你所喜欢的小数; ² 如果编译显示的是四位以上的数,数码管会怎么显示? ² 如果先编译显示一个四位数,再编译显示一个两位数,数码管上实际显示的是什么?如何让数码管显示正确的两位数? |
|
我发现:________________________________________________________________
要在数码管上显示按键的值,可以在“重复执行”指令中,使用“数码管清除”、“数码管显示”、“延时”指令;再将“读数字口”指令作为“数码管显示”指令的显示数值参数,设置等待时间为“200”毫秒即0.2秒。具体程序代码如下图3-4所示:
![1576139223463193.png blob.png](/ueditor/php/upload/image/20191212/1576139223463193.png)
图3-4 “在数码管上显示按键的值”程序代码
| 将上图3-4所示代码编译后下载到主控板上,然后“按下”或者“弹起”按键,观察数码管上显示的数值,并记录下来。 |
![1564627759877807.png image.png](/ueditor/php/upload/image/20190801/1564627759877807.png)
我发现:________________________________________________________________
计时器的数值会自动变化,从一个初始值开始依次递增或者依次递减。要在数码管上显示这个不断变化的数,需要新建变量:
可以先单击“变量”指令类别,再单击“创建变量”按钮,在打开的“新建变量”对话框(如下图所示)中输入“新变量的名称”为“Time”,最后单击“确定”按钮新建一个名为“Time”的变量。
注意:WULink-NOVA程序中的变量名不能是中文,只能使用英文字母和数字作为变量名、并且首位必须是英文字母。
变量创建完成后,在编写程序时,还需要先“声明变量类别”。也就是将“变量”指令类别中的“声明并赋值”指令拖动到编程区,与默认的“初始化”指令组合,再将“数字与逻辑”指令类别中“数值输入”指令作为“声明并赋值”指令的参数,设置“数值输入”指令参数为“1”。具体初始化程序代码如下图所示:
计时器程序一般先设置变量的值,也就是计时的初始值;然后重复执行,每次都是先清除数码管原有数值,再显示指定数值,等待指定时间后再增加变量的值。具体程序代码如下图3-5所示:
![1576139268537879.png blob.png](/ueditor/php/upload/image/20191212/1576139268537879.png)
图3-5 “简单计时器”程序代码
| 如果计时器是从“10”开始倒计时,计时到“0”结束。程序代码应该是怎样的? |
要用按钮控制计时器,也就是如果“读数字口”指令的值等于“0”(按键处于“按下”状态),计时器开始计时。计时结束后继续处于条件判断状态,等待再次按下按键重新计时。具体程序代码如下图3-6所示:
![1576139285243449.png blob.png](/ueditor/php/upload/image/20191212/1576139285243449.png)
图3-6 “用按键控制计时器”程序代码
| 能不能让这个计时器更好玩?比如再接上两个LED,当计时开始前绿色LED亮,数码管显示“0”;按下按键后开始计时,计时结束后闪烁红色LED。 |
能不能再接上一个按键,这个新增加的按键可以调整计时器需要计时的值。比如按一下这个按键在数码管上显示“10”,再按分别显示“20”、“30”……;需要计时的数值确定后,按另一个按钮开始倒计时,倒计时结束后闪烁最后显示的数字“0”。
我打算这么做:_______________________________________________________
______________________________________________________________________。
做的时候需要注意:____________________________________________________
______________________________________________________________________。