Page Title

第4课 使用蜂鸣器与红外遥控器——遥控电子琴


2019-08-01 11:02:59

image.png 

在创客作品中,经常会使用蜂鸣器,用于提醒或者警告使用者;除此之外,有时也会使用它演奏一些简单的乐曲。本课我们将使用蜂鸣器和按键模块制作一个音乐播放器,播放我们喜欢的乐曲。


image.png 

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

蜂鸣器模块


蜂鸣器是一种能够发出指定频率声音的装置(如下图4-1所示),由于结构简单、使用方便,因此在电子产品中应用非常广泛。

blob.png

4-1 蜂鸣器模块

声音是由物体振动产生的声波。它有三个主观属性:音量、音调和音色。音量指人耳感受到的声音强弱,也叫做“响度”;音调指人耳能分辨一个声音调子的高低程度,主要由声音的频率决定;音色指声音振动频率的特性,不同的物体由于材料、结构不同,发声时的振动频率特性不同,就会产生不同音色的声音。

对于蜂鸣器来说:它的驱动电流决定了所发声音的音量;它的工作频率决定了所发声音的音调;它的内部结构与发声原理决定了所发声音的音色。

红外遥控器


红外遥控器是一种红外线发射装置。WULink-NOVA套件中的红外遥控器有17个按键,除了0-9这十个数字以外,还包括四个方向键、OK”键以及“*”、“#”键(如下图4-2所示)。红外遥控器每个按键都有对应的按键值,可以根据需要在程序中定义不同的功能。

 blob.png

红外接收模块


红外接收模块一般与红外发射器一起使用,它能够接收发射器发射的红外线,然后将接收到的红外线信号转换为电信号,经过处理后还原为红外发射器发射的按键值(如上图4-3所示)。

WULink-NOVA套件中,红外遥控器和红外接收模块组成了一个完整的红外遥控系统。这类红外遥控方式在现实生活中几乎随处可见,比如绝大多数家庭都有的电视机、空调机,都采用了类似的红外遥控方式。

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

blob.png 

使用“设置板载蜂鸣器音调”指令可以设置蜂鸣器发出指定的音调。指令默认是发出低音DO”的声音;单击下拉列表,选择板载蜂鸣器模块响起的音调。

blob.png

使用“设置板载蜂鸣器输出频率”指令可以设置蜂鸣器发出指定频率的声音——也就是音调。指令的参数就是频率值,默认是“523Hz,可以根据需要修改。与“设置蜂鸣器响起音调”指令相比,这个指令更加灵活,除了音符,还可以设置各种声音的音调。

blob.png

使用“设置板载蜂鸣器响度”指令可以设置蜂鸣器的响度——也就是响度,该条指令默认蜂鸣器发出声音的响度值为“5”,将数值修改为“0”可以关闭蜂鸣器。

blob.png

使用“读红外值”指令可以读取指定端口红外接收模块的值。指令默认是数字端口“S0”,单击下拉列表,选择红外接收模块与扩展板连接的端口号。

blob.png

使用“红外按键值”指令可以读取红外遥控器按键的值。指令默认是“OK”键;通过单击下拉列表,还可以选择0-9这十个数字键、四个方向键、以及*”、“#”键。

image.png 

要制作本课的范例作品,可以按以下步骤先连接硬件、连接网络,然后进入“好好搭搭”网站编写、调试、编译、下载程序。

第一步:连接硬件、连接网络                        


首先将模块与主控板连接起来,用1根白色的连接线一端插入红外接收模块的接口,另一端连接主控板S0”端口;将电池插入电源接口(如下图4-2所示);接着打开电源开关,等待主控板连接网络成功。

blob.png

4-4 “音乐播放器”范例作品硬件连接图

第二步:数码管显示红外遥控器按键编码                        


打开浏览器,登录“好好搭搭”网站;单击网站上方的“创作”按钮,在“无线编程”网页中选择“WULink-NOVA”模板,进入“WULink-NOVA”编程设计页”。

要在数码管上显示红外遥控器按键的红外编码,需要先定义变量,用于存贮接收到的红外按键编码数值,然后根据这个变量值进行判断是否为0”,如果不为“0”,那么就在数码管上显示这个变量值——也就是按键编码值。单击“显示器”指令类别,找到“数码管显示”指令用来显示定义的变量,将它与“重复执行”指令组合;将这段代码编译后下载到主控板上,就会在数码管上显示红外遥控器按键的红外编码。具体程序代码如下图4-5所示:

blob.png 

4-5 “数码管显示红外遥控按键的红外编码”程序代码

 

第三步:让蜂鸣器演奏一个音符                        


打开浏览器,登录“好好搭搭”网站;单击网站上方的“创作”按钮,在“无线编程”网页中选择“WULink-NOVA”模板,进入“WULink-NOVA”编程设计页”。

要让蜂鸣器演奏一个音符,可以在“重复执行”指令中,先使用“设置板载蜂鸣器音调”指令,不修改音调也就是C调中的“低1DO”;再使用“设置板载蜂鸣器响度”指令,设置响度参数为“5”,也就是蜂鸣器发出声音的音量是“5”;然后使用“延时”指令,让蜂鸣器持续发声“1000毫秒”,也就是这个音符演奏的节拍;接着再使用“设置板载蜂鸣器响度”指令,设置响度参数为“0”,关闭蜂鸣器;最后再使用“延时”指令,延时“2000毫秒”后重新演奏“低1DO”这个音符。具体程序代码如下图4-6所示:

blob.png

4-6 “让蜂鸣器演奏一个音符”程序代码

image.png 

根据上图4-6程序代码,编写一段能够演奏一个你最喜欢音符的程序脚本。

 

 

 

第四步: 让蜂鸣器演奏多个音符                       


要让蜂鸣器演奏一个音符,可以在“重复执行”指令中,先使用“设置板载蜂鸣器音调”指令,修改音调为C调中的“中1DO”;再使用“设置板载蜂鸣器响度”指令,设置输出参数为“5”,也就是蜂鸣器发出声音的音量是“5”;然后使用“延时”指令,让蜂鸣器持续发声“1000毫秒”,也就是这个音符演奏的节拍;接着再使用“设置板载蜂鸣器响度”指令,设置输出参数为“0”,关闭蜂鸣器;最后再使用“延时”指令,延时“2000毫秒”后修改“设置板载蜂鸣器音调”指令,修改为C调中的“2RE”这个音符。具体程序代码如下图4-7所示:

blob.png

4-7 “让蜂鸣器演奏两个音符”程序代码

image.png 

根据 “两只老虎”的乐谱,编写这首儿歌的完整演奏程序。

  

blob.png 

 

第五步:用红外遥控器控制蜂鸣器演奏音符                  


要让红外遥控器控制蜂鸣器发声——比如按遥控器上的“1”按键,能够发出1DO”的声音。需要对所读取的红外编码数值进行判断:如果变量ir”——也就是读取的红外接收值,等于上一步骤获取的遥控器按键“1”所对应的数值“255”,那么就设置蜂鸣器的音调为1DO”、音量为“20”、延时为“1000毫秒”——也就是持续发1秒的声音,最后再设置音量为“0”、关闭蜂鸣器。同理可以设置遥控器按键2”按下时,蜂鸣器的音调为“中2RE

具体主程序代码如下图4-8所示:

blob.png 

4-8 “用红外遥控器控制蜂鸣器演奏音符”程序代码

image.png 

根据上图4-8程序代码,编写出其他按键控制蜂鸣器演奏出其他的音符。

 

 

image.png 

你能够使用7个按键和1个蜂鸣器模块,制作一个简单的电子琴吗?

我打算这么做:_______________________________________________________

______________________________________________________________________

做的时候需要注意:____________________________________________________

______________________________________________________________________