音乐盒又叫做八音盒。1796年由瑞士钟表匠安托·法布尔发明,常见的音乐盒是转动盒内的链环,音乐盒便可自动演奏音乐,一般一个音乐盒只有一首音乐。若是要让音乐盒一直重复播放音乐,一首歌结束之后就需要去转动链环,那样便不能悠闲舒适地享受音乐了。在沿袭传统,又结合现代技术的情况下,如何去创造一个属于自己的音乐盒呢?一个能够自己设定音乐,自己设定开关的音乐盒。
音乐盒的制作需要有一个会发声的工具,还有一个可控制开关的工具。按键作为常见的开关装置大家已经熟知。接下来好搭BOX带来一个会“说话”的新工具——蜂鸣器。
蜂鸣器是一种能够发出指定频率声音的装置(如下图5-1所示)能将音频信号转化为声
音信号的发音器件,在家用电器上,在银行、公安的报警系统中,在电子玩具、游戏机中都得到普遍应用。
![1564997956994562.png 图片.png](/ueditor/php/upload/image/20190805/1564997956994562.png)
图5-1 蜂鸣器模块
蜂鸣器模块 |
|
声音是由物体振动产生的声波。它有三个主观属性:响度音量、音调和音色。响度指人耳感受到的声音强弱,也叫做“音量”;音调指人耳能分辨一个声音调子的高低程度;音色指声音振动频率的特性,不同的物体由于材料、结构不同,发声时的振动频率也不相同,就会产生不同音色的声音。
对于蜂鸣器来说:它的驱动电流决定了所发声音的响度;它的工作频率决定了所发声音的音调;它的内部结构与发声原理决定了所发声音的音色。
要控制蜂鸣器的响度和音调,还需要使用以下新的指令:
使用这个指令可以设置蜂鸣器的响度,对于蜂鸣器来说,使用这个指令可以控制所发出声音的音量。
使用这个指令可以设置蜂鸣器的频率,对于蜂鸣器来说,使用这个指令可以控制所发出声音的音调。
要制作本课的范例作品,可以按以下步骤先连接硬件、连接网络,然后进入“好好搭搭”网站编写、调试、编译、下载程序。
准备工作:搭建硬件、连接网络、进入网站 |
|
第一步:搭建硬件、连接网络。将蜂鸣器模块和按键模块,放置在主控板上的任意六边形位置,磁铁吸合(如图5-2所示);打开主控板的电源开关,等待主控板连接网络成功。
![1564998028556224.png 图片.png](/ueditor/php/upload/image/20190805/1564998028556224.png)
图5-2 “音乐盒”范例作品硬件图
第二步:进入网站。打开浏览器,登录“好好搭搭”网站;单击网站上方的“创作”按钮,在“无线编程”网页中选择“好搭BOX智能实验箱”模板,进入程序设计页。
若要制作音乐盒,首先需要掌握如何让蜂鸣器发出不同的声音,然后增加按键的控制。
案例一:让蜂鸣器演奏音符 |
|
要让蜂鸣器演奏一个音符,可以在“输出”类别中中先找到设置蜂鸣器输出频率和强度的指令,将两条指令分别添加到舞台上的“重复执行”指令中,默认输出频率为“523”,输出强度为“5”。参考下图5-5的音符表,可以看到让蜂鸣器发出频率为“523”的声音,也就是C调中的“do”;若让蜂鸣器间断地发出声音,可借鉴单色LED闪烁的制作方法,增加等待时间和控制蜂鸣器停止发声的语句。让蜂鸣器以“响一秒停一秒”的规律重复循环,具体程序代码如下图5-3所示:
![1564998052675707.png 图片.png](/ueditor/php/upload/image/20190805/1564998052675707.png)
图5-3 “让蜂鸣器演奏音符”程序代码
案例二:会唱歌的蜂鸣器 |
|
音乐是由一个个的音符加上节奏组成的,蜂鸣器唱歌和人唱歌一样,按照乐谱的顺序有节奏地发出每一个音调。该案例中,同样使用“设置蜂鸣器频率”和“设置蜂鸣器响度”来控制蜂鸣器歌唱的每一个音符,而节奏可以理解为每一个音符发声的时间长短,这里可用等待语句实现节奏的控制。以《上学歌》中第一句“太阳当空照”为例,共有5个音符,其中前面四个音符都为半拍,第五个音符有两拍,若设置一拍的时间为1秒,则前四个音符声音持续的时间为0.5秒,第五个音符声音持续的时间为2秒,(《上学歌》的乐谱可见图5-7,每一个音符对应的频率值可参照图5-5)本案例具体程序如下图5-4:
![1564998095880872.png 图片.png](/ueditor/php/upload/image/20190805/1564998095880872.png)
图5-4 “会唱歌的蜂鸣器”程序代码
图5-5音调表
![1564998172848241.png 图片.png](/ueditor/php/upload/image/20190805/1564998172848241.png)
图5-6《上学歌》简谱
| 以上的程序运行之后,蜂鸣器在通电情况下会一直唱歌,如何实现只有按下“中”按键之后,蜂鸣器才会唱歌呢?请你尝试添加控制按钮,并完成整首歌的指令编写。 |
案例三: 快速编曲法 |
|
从上图5-4程序中可以发现,完成一个音符的演奏需要四条指令(设置蜂鸣器输出音频、设置蜂鸣器响度为5、等待时间、设置蜂鸣器响度为0),而一首歌都有几十个音符,编写整首曲子便需要近百行指令,程序会变得很复杂,不仅不易于观看,之后的制作也容易出错,那如何解决以上的问题呢?
再仔细观察,不难发现,以上四个语句针对不同的音符只需要修改输出的频率和等待的时间长短。在“函数”选项卡中,有一个“PROCEDURE”的代码块,可以实现将以上四个一句整合为一个语句,具体操作方法如下:
下面以新建一个名为“Note”的音符演奏功能块为例,介绍具体操作步骤:
1. 单击“函数”选项卡中的“PROCEDURE”代码块,将“PROCEDURE”更改为“Note”。如下图5-7所示:
![1564998197889633.png 图片.png](/ueditor/php/upload/image/20190805/1564998197889633.png)
图5-7 “PROCEDURE”代码块
注意:与变量一样,在好搭BOX中功能块名称也不能是中文,只能使用英文字母和数字作为变量名、并且首位必须是英文字母。
由于演奏音符需要指定音符的“音调”、“节拍”,因此需要为新建的功能块添加两个数字参数,并且应该为每个参数添加标签,说明参数的用途。
要添加参数标签,可以先单击代码块中的“齿轮”,展开进行具体的设置;再将“输入名称:……”的代码块拖入右侧“输入”代码块下,单击标签名“x”,用键盘修改标签名称为“tone”表示音调。
重复以上步骤,并修改标签名称为“beat”表示节拍,如下图5-8所示:
![1564998217268057.png 图片.png](/ueditor/php/upload/image/20190805/1564998217268057.png)
图5-8 为新建函数添加数字参数
2. 功能块设置完成后,单击“齿轮”按钮关闭设置框 。会在“函数”选项卡中增加这个名为“Note与tone,beat”的功能块脚本指令;同时会在“变量”选项卡中增加两个名为“tone”和“beat”的变量。
3. 在“Note”指令下方添加“设置蜂鸣器频率”、“设置蜂鸣器响度为5”、“等待”以及 “设置蜂鸣器响度为0”指令;将“变量”选项卡中的“tone”变量拖动到“设置蜂鸣器频率”指令参数位置,“beat”参数拖动到“延时”指令参数位置如下图5-9所示:
![1564998230338826.png 图片.png](/ueditor/php/upload/image/20190805/1564998230338826.png)
图5-9 “演奏音符功能块”脚本代码
添加了这个名为“Note”的演奏音符功能块后,就可以在主程序中调用它编写演奏音符的程序代码。如下图5-10所示就是基于图5-4的内容,增加了按钮控制,并用新建功能模块改进后的程序代码。
![1564998245348105.png 图片.png](/ueditor/php/upload/image/20190805/1564998245348105.png)
图5-10 “调用功能块演奏音符”主程序代码
| 蜂鸣器不仅可以根据不同的乐谱制作成百变的音乐盒,还可以应用在我们生活的更多方面,例如门铃、消防警报,救护车警报灯等。下面请你根据阅读材料二中提供的信息,尝试制作更多的案例。
|
我发现:________________________________________________________________
_______________________________________________________________________
蜂鸣器除了用于各种警报,在很多电子产品的提示音中也扮演中重要的角色,请你查找相关应用,并尝试用蜂鸣器制作更多案例。
我打算这么做:_______________________________________________________
______________________________________________________________________。
做的时候需要注意:____________________________________________________
______________________________________________________________________。