這是一款簡易的音樂創(chuàng)作系統(tǒng)。使用 Arduino 驅(qū)動無源蜂鳴器和一排 LED 讓音樂起舞。它巧妙的使用了紅外遙控器作為琴鍵,通過編輯「樂譜」程序,來記錄和創(chuàng)作自己的音樂。
項目中還自帶了 Shape of you、Merry Christmas、Star wars、Game of Thrones 等經(jīng)典流行音樂和電影、游戲原聲!
材料清單
Arduino UNO R3 x 1USB 連接線 x 1跳線 x 21紅色LED x 4綠色LED x 4黃色LED x 2無源蜂鳴器 x 1紅外接收器和遙控器 x 1220Ω 限流電阻器 x 4面包板 x 1
接線
連接 LED 燈和無源蜂鳴器
1、將 LED 燈和蜂鳴器安裝在面包板的同一行。
2、在 LED 燈左側(cè)的將 220Ω 限流電阻插入到面包板的 GND 中。
連接兩側(cè)的 LED 燈
1、將兩側(cè)的 LED 燈連接在一起,同時安裝 5 個電阻。
2、為了方便區(qū)分,使用與 LED 燈同色的跳線相連。
連接到 Arduino
1、使用五根跳線將 LED 燈的陽極連接到引腳
2、3、4、5、6。2、將無源蜂鳴器的 GND 引腳連接到面包板的 GND 上。
3、將無源蜂鳴器的正極引腳連接到 Arduino 的引腳 8 上。
4、將 IR 接收器插入面包板,并將信號引腳連接到面包板的引腳 9,將其 VCC 引腳連接到 5V 引腳,最后將 GND 引腳連接到面包板的 GND 上。
庫的介紹
項目中會使用兩個額外的庫:IRremote(用于處理紅外遠程信號) 和 toneAC(生成音調(diào))。這些庫都需要安裝在 Arduino IDE 中。
常量和變量
該代碼定義了一些常量和變量:
IR_RECEIVER_PIN:連接 IR 接收器的引腳。
LED_PINS:連接到 LED 燈的引腳陣列。
BUZZER_PIN:引腳連接到蜂鳴器。
IRrecv IRrecv(IR_RECEIVER_PIN):用于接收和解碼 IR 信號的對象。
decode_resultsresults:用于存儲解碼的 IR 信號的變量。
tones:與音調(diào)相對應(yīng)的一組頻率。
currentToneIndex:跟蹤當前播放的音調(diào)。
lastCommandTime:記錄最后一個 IR 命令的時間,避免快速重復(fù)的命令。
debounceDelay:防止由于噪聲或重復(fù)信號而快速觸發(fā)的延遲。
設(shè)置功能
設(shè)置功能初始化串行通信,設(shè)置 IR 接收器,將 LED 燈引腳配置為輸出,并執(zhí)行初始 LED 燈閃爍以便獲得視覺反饋。
循環(huán)功能
環(huán)路功能持續(xù)檢查輸入的 IR 信號。如果接收到一個信號,會經(jīng)過足夠長的去抖動的時間,然后打印信號的十六進制值,播放相應(yīng)的樂音,并更新最后的命令時間。此外,它還觸發(fā)了按順序和反向閃爍 LED 燈的功能。
播放音調(diào)功能
playTone 功能將特定的 IR 遠程十六進制值映射到相應(yīng)的音樂音調(diào)。當找到一個有效值時,它會通過蜂鳴器播放相關(guān)的音調(diào)。短暫暫停后,會移動到下一個音調(diào)。如果你想播放歌曲,你可以在 Arduino 相關(guān)網(wǎng)站上檢索,你會找到一些不錯的音樂,例如生日快樂歌和超級瑪麗主題曲。
閃爍 LED 燈的功能
LED 燈有三種閃爍的功能:
1、fashLEDs:按模式閃爍 LED 燈,表示指示代碼的開始。
2、flashLEDsSequence:按順序閃爍 LED 燈。
3、flashLEDsReverse:按相反方向閃爍 LED 燈。
播放歌曲
現(xiàn)在就可以開始播放歌曲啦,你已經(jīng)掌握了音符,可以隨意嘗試代碼中的聲音和音調(diào)。你也可以將自己喜歡的歌曲添加到代碼中。
審核編輯:劉清
-
紅外遙控器
+關(guān)注
關(guān)注
3文章
133瀏覽量
21665 -
蜂鳴器
+關(guān)注
關(guān)注
12文章
891瀏覽量
45917 -
紅外接收器
+關(guān)注
關(guān)注
2文章
42瀏覽量
19076 -
Arduino
+關(guān)注
關(guān)注
188文章
6468瀏覽量
186947
原文標題:基于 Arduino 的音樂創(chuàng)作系統(tǒng)
文章出處:【微信號:趣無盡,微信公眾號:趣無盡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論