Page Title

第3课 在Arduino中使用数码管与按键——送给妈妈的定时器


2019-07-31 15:02:20

 blob.png

数码管也叫做LED数码管,主要用来显示数字。由于它价格便宜、使用简单,在日常生活中应用非常普遍。本课我们将使用数码管和按键,为爱做烘焙的妈妈制作一个定时器,帮助她更加精确的掌握时间。

 

blob.png

要制作本课的范例作品,需要使用以下新的硬件模块:

数码管模块


本书所使用的数码管模块是由“好好搭搭”出品的,它可以显示四位数字,所以叫做“四位数码管”(如下图3-1所示)。数码管的每个数都是由八段LED组成,其中七段LED用于显示数字,第八段在数字的右下角,用于显示小数点。


blob.png


   图3-1 四位数码管模块

按键模块


本书所使用的按键模块是由“好好搭搭”出品的,由于模块上只有一个按键,所以也叫做“单按键模块”(如下图3-2所示)。一般还可以根据按键帽的颜色分为“红色”、“黄色”、“蓝色”按键。


blob.png


   图3-2 按键模块

按键一般作为开关使用,有“按下”和“弹起”两种状态。默认状态是“弹起”;当用手指按住按键帽往下按、并且保持不动的时候,就处于“按下”状态;松开手指,按键又会弹回、重新处于“弹起”状态。

 

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

blob.png

使用“读数字口”指令可以读取指定数字口的输出值。指令默认是数字口“2”,可以通过单击下拉菜单,选择按键与扩展板相连接的端口号。

在“好好搭搭”UNO扩展板上,“A0”、“A1”、“A2”、“A3”这四个模拟端口具备数字端口功能,也可以当作数字端口使用。

blob.png

使用“数码管显示”指令可以设置数码管显示指定的数值。指令默认显示的是整数“123”,还可以单击下拉菜单,选择输入的数值类型为“小数”。

 

blob.png

使用“数码管清除”指令可以清除数码管上原来显示的数值。

 

blob.png

要制作本课的范例作品,需要使用以下器材:

²  UNO主控板和配套的扩展板

²  四位数码管模块:一个

²  单按键模块:一个

²  4P连接线:一根

²  3P连接线:一根

 

第一步:连接硬件、运行插件                       


要搭建本课的范例作品硬件,可以按以下步骤操作:

1.      UNO扩展板插入到UNO主控板上。

     2.      4P连接线白色插头插入数码管模块的接口中、黑色插头插入扩展板第二排右边的IIC端口,黑色插头插入时要注意连接线每根线的颜色和扩展板插座针脚的颜色相同。

      注:“好好搭搭”UNO 扩展板上有四个IIC端口(IIC也可写做I2C,读作“I方C”),位于第二排最右边。端口的标注文字除了接地线“GND”、电源线“VCC”,还有数据线“SDA”和时钟线“SCL”。如果使用其它厂商的扩展板,一般也能够找到相应名称的IIC端口。

    3.      3P连接线白色插头插入按键模块的接口中、黑色插头插入扩展板中间的2号端口,黑色插头插入时要注意连接线每根线的颜色和扩展板插座针脚的颜色相同。

   具体器材连接方式如下图3-3所示:


blob.png

                                              

3-3 “送给妈妈的定时器”范例作品硬件连接图

 

4.      USB线把主控板和计算机连接起来,打开“好好搭搭硬件下载”插件,选择“型号”为“UNO”,确认插件程序左下角的端口和型号显示正确。

 

第二步:在数码管上显示指定数值                       


首先打开浏览器进入“好好搭搭”网站;然后单击进入网站的“创作”栏目,选择“Arduino”模版,进入“模版项目页”;在“模版项目页”中单击网页右上角的“转到设计页”按钮,进入“Arduino编程设计页”。

在“Arduino编程设计页”中单击“脚本”选项卡中的“更多”指令类别,找到“数码管显示”指令,将它与“好好搭搭硬件程序”指令组合;将这段代码编译后下载到主控板上,就会在数码管上显示默认的“123”。

blob.png

修改“数码管显示”指令参数,使得数码管分别显示:

²  一个你所喜欢的、四位以内的数;

²  一个你所喜欢的小数;

²  如果编译显示的是四位以上的数,数码管会怎么显示?

²  如果先编译显示一个四位数,再编译显示一个两位数,数码管上实际显示的是什么?如何让数码管显示正确的两位数?

 

我发现:________________________________________________________________

 

第三步: 在数码管上显示按键的值                      


要在数码管上显示按键的值,可以在“重复执行”指令中,使用“数码管清除”、“数码管显示”、“等待”指令;再将“读数字口”指令作为“数码管显示”指令的显示数值参数,确认“读数字口”的参数就是按键模块实际连接的端口;最后设置等待时间为“0.2”秒。具体程序代码如下图3-4所示:


blob.png


3-4 “在数码管上显示按键的值”程序代码

blob.png

将上图3-4所示代码编译后下载到主控板上,然后“按下”或者“弹起”按键,观察数码管上显示的数值,并记录下来。

 


 blob.png

我发现:________________________________________________________________

 

第四步:制作计时器                  


计时器的数值会自动变化,从一个初始值开始依次递增或者依次递减。要在数码管上显示这个不断变化的数,需要新建变量:

可以先单击“脚本”选项卡中的“数据”指令类别,再单击“新建变量”按钮,在打开的“新建变量”对话框中输入“变量名”为“time”,最后单击“确定”按钮新建一个名为“time”的变量。

注:Arduino程序中的变量名不能是中文,只能使用英文字母和数字作为变量名、并且首位必须是英文字母。

计时器程序一般先设置变量的值,也就是计时的初始值;然后重复执行,每次都是先清除数码管原有数值,再显示指定数值,等待指定时间后再增加变量的值。具体程序代码如下图3-5所示:


blob.png


3-5 “简单计时器”程序代码

blob.png

如果计时器是从“10”开始倒计时,计时到“0”结束。程序代码应该是怎样的?

 

 

第五步: 用按键控制计时器                      


要用按钮控制计时器,也就是如果“读数字口”指令的值等于“1”(按键处于“按下”状态),计时器开始计时。计时结束后继续处于条件判断状态,等待再次按下按键重新计时。具体程序代码如下图3-6所示:


blob.png


3-6 “用按键控制计时器”程序代码

blob.png

能不能让这个计时器更好玩?比如再接上两个LED,当计时开始前绿色LED亮,数码管显示“0”;按下按键后开始计时,计时结束后闪烁红色LED

 

blob.png

能不能再接上一个按键,这个新增加的按键可以调整计时器需要计时的值。比如按一下这个按键在数码管上显示“10”,再按分别显示“20”、“30”……;需要计时的数值确定后,按另一个按钮开始倒计时,倒计时结束后闪烁最后显示的数字“0”。

我打算这么做:_______________________________________________________

______________________________________________________________________

做的时候需要注意:____________________________________________________

______________________________________________________________________