Oh!Coder

Coding Life

好玩的Arduino-大合唱

| Comments

Hi,大家好!上一次,我们一起完成了一个跨时代的留声机。用单个喇叭播放了一首优美的歌曲。留声机的实现固然很美好,但毕竟只有一个喇叭,如果哪天需求变更,想再多加两个喇叭是否可以呢?当然也是可以的!我们今天就一起学习一下如何让多个喇叭配合播放一段优美的旋律!

首先,还是老规矩,让我们看看需要做哪些准备?

硬件方面

arduino-multiple-tone-parts

图片来源:Arduino电路配件

具体包括如下:

  • Arduino UNO电路板(1块)
  • 面包板(1块)
  • 100Ω电阻(3个)
  • 8Ω扬声器(3个)
  • 面包线(若干)

配件的种类几乎和上一节一样,唯一不一样的是,面包板变大了一些。对于这个大型号的面包板,简单说明一下,上下两行横排的插孔之间是连通的。另外,电阻和扬声器的数量也各自变成了三个。

软件方面

Arduino官方提供的IDE。

连接电路

arduino-multiple-tone

图片来源:Arduino电路连接

看起来好像很复杂,其实就是多了两个扬声器而已,现在变成了三个。由于面包板上下各两行的插孔横向之间是连通的,也就是说,只需要将上排第二行中任意一个插孔连接到Arduino的GND针脚,此一整行即可连通地线。所以如果想连通地线,只需要将底线插入此行的任意一个插孔即可,如图中所示。

好!剩下最后一步。让我们添加几行代码!

添加几行代码

首先,新建一个项目窗口。

arduino-ide-new

图片来源:Arduino官方IDE

向其中添加几行代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 对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-menu

图片来源:Arduino官方IDE的文件编辑菜单选项

点击上图中标有向右指向的箭头图标,将编写完成的代码烧入Arduino电路板。如果一切顺利,烧入完成之后Arduino会立刻重复一段美妙的音乐!嗯,就是“大合唱”!

总结

通过这次的学习,我们重新熟悉了一下如何播放声音。在上一次学习的基础之上,我们又增加了两个扬声器。从知识上来说,主要是在巩固对于声音的控制。

下期预告

现在我们基本上已经掌握了声音的播放和停止。唯一可惜的是,声音的播放形式还是那么的刻板。怎么办呢?嗯,接下来,让我们来点新潮的,听一听圣光的声音!

Comments