Hi,大家好!上一次,我們一起完成了一個跨時代的留聲機。用單個喇叭播放了一首優美的歌曲。留聲機的實現固然很美好,但畢竟只有一個喇叭,如果哪天需求變更,想再多加兩個喇叭是否可以呢?當然也是可以的!我們今天就一起學習一下如何讓多個喇叭配合播放一段優美的旋律!
首先,還是老規矩,讓我們看看需要做哪些準備?
硬件方面
arduino-multiple-tone.jpg (150.47 KB, 下載次數: 179)
下載附件
2016-1-10 04:40 上傳
圖片來源:Arduino電路配件
具體包括如下:
- Arduino UNO電路板(1塊)
- 面包板(1塊)
- 100Ω電阻(3個)
- 8Ω揚聲器(3個)
- 面包線(若干)
配件的種類幾乎和上一節一樣,唯一不一樣的是,面包板變大了一些。對于這個大型號的面包板,簡單說明一下,上下兩行橫排的插孔之間是連通的。另外,電阻和揚聲器的數量也各自變成了三個。
軟件方面Arduino官方提供的IDE。
連接電路
arduino-ide-new.jpg (70.98 KB, 下載次數: 151)
下載附件
2016-1-10 04:40 上傳
圖片來源:Arduino電路連接
看起來好像很復雜,其實就是多了兩個揚聲器而已,現在變成了三個。由于面包板上下各兩行的插孔橫向之間是連通的,也就是說,只需要將上排第二行中任意一個插孔連接到Arduino的GND針腳,此一整行即可連通地線。所以如果想連通地線,只需要將底線插入此行的任意一個插孔即可,如圖中所示。
好!剩下最后一步。讓我們添加幾行代碼!
添加幾行代碼首先,新建一個項目窗口。
arduino-menu.jpg (9.87 KB, 下載次數: 156)
下載附件
2016-1-10 04:40 上傳
圖片來源: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.zg4o1577.cn/bbs/dpj-41334-1.html
Arduino教程-開篇:http://www.zg4o1577.cn/bbs/dpj-41335-1.html
Arduino教程-點亮LED神燈:http://www.zg4o1577.cn/bbs/dpj-41336-1.html
Arduino教程-讓LED神燈閃爍:http://www.zg4o1577.cn/bbs/dpj-41337-1.html
Arduino教程-讓LED神燈亮度漸變:http://www.zg4o1577.cn/bbs/dpj-41338-1.html
Arduino教程-獲取輸入數字信號:http://www.zg4o1577.cn/bbs/dpj-41339-1.html
Arduino教程-獲取輸入模擬信號:http://www.zg4o1577.cn/bbs/dpj-41340-1.html
Arduino教程-另一種時間延遲:http://www.zg4o1577.cn/bbs/dpj-41331-1.html
Arduino教程-按鍵開關:http://www.zg4o1577.cn/bbs/dpj-41341-1.html
Arduino教程-停止抖動!:http://www.zg4o1577.cn/bbs/dpj-41333-1.html
Arduino教程-拋棄外部電阻!:http://www.zg4o1577.cn/bbs/dpj-41332-1.html
Arduino教程-用按鍵開關計數:http://www.zg4o1577.cn/bbs/dpj-41330-1.html
|