找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4382|回复: 1
收起左侧

Arduino教程-大合唱

[复制链接]
ID:99556 发表于 2016-1-10 04:37 | 显示全部楼层 |阅读模式
Hi,大家好!上一次,我们一起完成了一个跨时代的留声机。用单个喇叭播放了一首优美的歌曲。留声机的实现固然很美好,但毕竟只有一个喇叭,如果哪天需求变更,想再多加两个喇叭是否可以呢?当然也是可以的!我们今天就一起学习一下如何让多个喇叭配合播放一段优美的旋律!
首先,还是老规矩,让我们看看需要做哪些准备?
硬件方面 arduino-multiple-tone.jpg
图片来源:Arduino电路配件
具体包括如下:
  • Arduino UNO电路板(1块)
  • 面包板(1块)
  • 100Ω电阻(3个)
  • 8Ω扬声器(3个)
  • 面包线(若干)
配件的种类几乎和上一节一样,唯一不一样的是,面包板变大了一些。对于这个大型号的面包板,简单说明一下,上下两行横排的插孔之间是连通的。另外,电阻和扬声器的数量也各自变成了三个。
软件方面Arduino官方提供的IDE。
连接电路 arduino-ide-new.jpg
图片来源:Arduino电路连接
看起来好像很复杂,其实就是多了两个扬声器而已,现在变成了三个。由于面包板上下各两行的插孔横向之间是连通的,也就是说,只需要将上排第二行中任意一个插孔连接到Arduino的GND针脚,此一整行即可连通地线。所以如果想连通地线,只需要将底线插入此行的任意一个插孔即可,如图中所示。
好!剩下最后一步。让我们添加几行代码!
添加几行代码首先,新建一个项目窗口。
arduino-menu.jpg
图片来源:Arduino官方IDE
向其中添加几行代码:


  1. // 对Arduino电路板或相关状态进行初始化方法
  2. void setup() {
  3.     // 此处木有代码,是不是很开心?!
  4. }
  5. // 系统调用,无限循环方法
  6. void loop() {
  7.   // 向8号数字引脚发送信号,
  8.   // 终止此引脚上的扬声器继续发声。
  9.   noTone(8);
  10.   // 播放6号引脚上的扬声器。
  11.   // 频率为440Hz,时长为200毫秒。
  12.   tone(6, 440, 200);
  13.   // 延时200毫秒。
  14.   delay(200);
  15.   // 向6号数字引脚发送信号,
  16.   // 终止此引脚上的扬声器继续发声。
  17.   noTone(6);
  18.   // 播放7号引脚上的扬声器。
  19.   // 频率为494Hz,时长为500毫秒。
  20.   tone(7, 494, 500);
  21.   // 延时500毫秒。
  22.   delay(500);
  23.   // 向7号数字引脚发送信号,
  24.   // 终止此引脚上的扬声器继续发声。  
  25.   noTone(7);
  26.   // 播放8号引脚上的扬声器。
  27.   // 频率为523Hz,时长为300毫秒。
  28.   tone(8, 523, 300);
  29.   // 延时300毫秒。
  30.   delay(300);
  31. }
复制代码



好了!整个代码就酱!坦白说很简单,连判断语句都木有,只有三个方法,其中两个还是一对,方法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



回复

使用道具 举报

ID:328558 发表于 2020-8-7 10:02 | 显示全部楼层
很简洁的编程方式啊,还是16的帖子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表