如何使用ESP8266開發(fā)板和蜂鳴器創(chuàng)建一個(gè)簡單的鋼琴風(fēng)格的旋律播放器
本項(xiàng)目演示了如何使用ESP8266開發(fā)板和蜂鳴器創(chuàng)建一個(gè)簡單的鋼琴風(fēng)格的旋律播放器。通過代碼精確控制時(shí)間和頻率,ESP8266可以產(chǎn)生音符,可以用來播放熟悉的曲調(diào),比如《鈴兒響叮當(dāng)》。
該項(xiàng)目是初學(xué)者友好的,重點(diǎn)是了解如何使用GPIO引腳和定時(shí)控制生成聲音,而不需要任何外部聲音模塊。
為什么要做這個(gè)項(xiàng)目?
許多初學(xué)者很難理解微控制器如何產(chǎn)生超出基本開/關(guān)嗶嗶聲的聲音。創(chuàng)建這個(gè)項(xiàng)目是為了清楚地展示:
?微控制器如何生成音符
?時(shí)間和延遲如何影響旋律回放
?不同的頻率如何對應(yīng)不同的音符
它還可以作為使用聲音作為即時(shí)反饋的嵌入式編程的有趣介紹。
它是如何工作的
ESP8266通過連接到蜂鳴器的一個(gè)GPIO引腳輸出方波信號。每個(gè)音符都有一個(gè)特定的頻率和持續(xù)時(shí)間。
工作原理很簡單:
1. GPIO引腳以特定的速率切換以產(chǎn)生音調(diào)
2. 每個(gè)音調(diào)對應(yīng)一個(gè)音符
3. 延遲用來控制音符的長度和停頓
4. 一連串的音符創(chuàng)造了一個(gè)可識別的旋律
所有的時(shí)間和音符控制完全通過軟件處理。
硬件設(shè)置
硬件設(shè)置是最小的:
?ESP8266開發(fā)板
?蜂鳴器連接到GPIO引腳
?共接地
這種簡單的設(shè)置使得使用基本組件和面包板布線可以輕松地復(fù)制項(xiàng)目。
軟件實(shí)現(xiàn)
本項(xiàng)目使用Arduino IDE進(jìn)行編程。音符被定義為頻率,函數(shù)被用來產(chǎn)生具有精確延遲的音調(diào)。
使用的主要軟件概念:
?GPIO控制
?Delay-based時(shí)機(jī)
?Frequency-to-note映射
?順序回放邏輯
代碼的結(jié)構(gòu)使旋律可以很容易地修改或擴(kuò)展。
結(jié)果與演示
上傳后,ESP8266通過蜂鳴器成功播放音樂。旋律節(jié)奏流暢,音符清晰可辨。
可能的改進(jìn)
這個(gè)項(xiàng)目可以以多種方式擴(kuò)展:
?添加按鈕來播放不同的音符
?創(chuàng)建基于鍵盤的鋼琴
?演奏多種旋律
?使用ESP8266的Wi-Fi功能進(jìn)行遠(yuǎn)程控制
結(jié)論
這個(gè)ESP8266鋼琴項(xiàng)目是探索聲音生成,定時(shí)控制和嵌入式編程概念的好方法。它證明了即使是簡單的組件也可以用來創(chuàng)建引人入勝的教育項(xiàng)目。
注意:該項(xiàng)目的完整源代碼可在該項(xiàng)目的“代碼”部分中獲得。
本文編譯自hackster.io





