Hi,大家好!上一次,我们一起完成了一个跨时代的留声机。用单个喇叭播放了一首优美的歌曲。留声机的实现固然很美好,但毕竟只有一个喇叭,如果哪天需求变更,想再多加两个喇叭是否可以呢?当然也是可以的!我们今天就一起学习一下如何让多个喇叭配合播放一段优美的旋律!
首先,还是老规矩,让我们看看需要做哪些准备?
硬件方面
图片来源:Arduino电路配件
具体包括如下:
- Arduino UNO电路板(1块)
- 面包板(1块)
- 100Ω电阻(3个)
- 8Ω扬声器(3个)
- 面包线(若干)
配件的种类几乎和上一节一样,唯一不一样的是,面包板变大了一些。对于这个大型号的面包板,简单说明一下,上下两行横排的插孔之间是连通的。另外,电阻和扬声器的数量也各自变成了三个。
软件方面Arduino官方提供的IDE。
连接电路
图片来源:Arduino电路连接
看起来好像很复杂,其实就是多了两个扬声器而已,现在变成了三个。由于面包板上下各两行的插孔横向之间是连通的,也就是说,只需要将上排第二行中任意一个插孔连接到Arduino的GND针脚,此一整行即可连通地线。所以如果想连通地线,只需要将底线插入此行的任意一个插孔即可,如图中所示。
好!剩下最后一步。让我们添加几行代码!
添加几行代码首先,新建一个项目窗口。
图片来源:Arduino官方IDE
向其中添加几行代码:
- // 对Arduino电路板或相关状态进行初始化方法
- void setup() {
- // 此处木有代码,是不是很开心?!
- }
- // 系统调用,无限循环方法
- void loop() {
- // 向8号数字引脚发送信号,
- // 终止此引脚上的扬声器继续发声。
- noTone(8);
- // 播放6号引脚上的扬声器。
- // 频率为440Hz,时长为200毫秒。
- tone(6, 440, 200);
- // 延时200毫秒。
- delay(200);
- // 向6号数字引脚发送信号,
- // 终止此引脚上的扬声器继续发声。
- noTone(6);
- // 播放7号引脚上的扬声器。
- // 频率为494Hz,时长为500毫秒。
- tone(7, 494, 500);
- // 延时500毫秒。
- delay(500);
- // 向7号数字引脚发送信号,
- // 终止此引脚上的扬声器继续发声。
- noTone(7);
- // 播放8号引脚上的扬声器。
- // 频率为523Hz,时长为300毫秒。
- tone(8, 523, 300);
- // 延时300毫秒。
- delay(300);
- }
复制代码
好了!整个代码就酱!坦白说很简单,连判断语句都木有,只有三个方法,其中两个还是一对,方法tone()和noTone()。delay()方法不用多说,就是延迟执行,参数单位为毫秒。
图片来源:Arduino官方IDE的文件编辑菜单选项
点击上图中标有向右指向的箭头图标,将编写完成的代码烧入Arduino电路板。如果一切顺利,烧入完成之后Arduino会立刻重复一段美妙的音乐!嗯,就是“大合唱”!
总结通过这次的学习,我们重新熟悉了一下如何播放声音。在上一次学习的基础之上,我们又增加了两个扬声器。从知识上来说,主要是在巩固对于声音的控制。
下期预告现在我们基本上已经掌握了声音的播放和停止。唯一可惜的是,声音的播放形式还是那么的刻板。怎么办呢?嗯,接下来,让我们来点新潮的,听一听圣光的声音!
ohcoder的系列精彩Arduino教程:
Arduino教程-初识Arduino(包含本教程目录):http://www.51hei.com/bbs/dpj-41334-1.html
Arduino教程-开篇:http://www.51hei.com/bbs/dpj-41335-1.html
Arduino教程-点亮LED神灯:http://www.51hei.com/bbs/dpj-41336-1.html
Arduino教程-让LED神灯闪烁:http://www.51hei.com/bbs/dpj-41337-1.html
Arduino教程-让LED神灯亮度渐变:http://www.51hei.com/bbs/dpj-41338-1.html
Arduino教程-获取输入数字信号:http://www.51hei.com/bbs/dpj-41339-1.html
Arduino教程-获取输入模拟信号:http://www.51hei.com/bbs/dpj-41340-1.html
Arduino教程-另一种时间延迟:http://www.51hei.com/bbs/dpj-41331-1.html
Arduino教程-按键开关:http://www.51hei.com/bbs/dpj-41341-1.html
Arduino教程-停止抖动!:http://www.51hei.com/bbs/dpj-41333-1.html
Arduino教程-抛弃外部电阻!:http://www.51hei.com/bbs/dpj-41332-1.html
Arduino教程-用按键开关计数:http://www.51hei.com/bbs/dpj-41330-1.html
|