如何给Arduino项目添加音乐播放功能
(以下教程僅針對(duì)Arduino UNO、Arduino Nano等使用Atmel328P為核心的開發(fā)板)
一、蜂鳴器播放音樂
????????說起單片機(jī)播放音樂,大家第一個(gè)想到的應(yīng)該是無源蜂鳴器或喇叭。( 因無源蜂鳴器的工作原理與揚(yáng)聲器相同,此處混為一談,但實(shí)際使用仍有區(qū)別 ),無論是51、Arduino、亦或是STM32,在入門時(shí)期都會(huì)使用蜂鳴器進(jìn)行播放音樂。無源蜂鳴器的應(yīng)用非常廣泛,小到電子賀卡,玩具,大到上世紀(jì)的康瑞達(dá)電腦,都使用無源蜂鳴器進(jìn)行發(fā)聲或音樂的播放。
在Arduino中,經(jīng)常使用以下的函數(shù)驅(qū)動(dòng)蜂鳴器:
Tone(蜂鳴器引腳, 輸出的頻率);// 在指定的引腳輸出指定的頻率使蜂鳴器發(fā)聲 noTone(蜂鳴器引腳); // 停止指定引腳的PWM輸出,使蜂鳴器不發(fā)聲對(duì)于這用播放音樂的方式:
優(yōu)點(diǎn)有:
缺點(diǎn)有:
二、MP3模塊播放音樂
????????在今天,國產(chǎn)的MP3模塊已經(jīng)非常流行了如JQ6500、JQ8900等,使用MP3模塊連接單片機(jī),既可以簡單的播放音樂,又可以控制EQ、音量、隨意暫停播放插播歌曲、查詢歌曲名字、歌曲時(shí)長等。他的操作如同老式MP3,只需要將他連接到電腦,存放歌曲即可。
在Arduino中,經(jīng)常使用以下的函數(shù)驅(qū)動(dòng)MP3模塊:
// 使用串口控制 dat = Serial.read(); Serial.write(dat); // IO或單總線方式控制 delay(ms); delayMicroseconds(us); digitalWrite(io, LOW); digitalWrite(io, HIGH);對(duì)于這用播放音樂的方式:
優(yōu)點(diǎn)有:
缺點(diǎn)有:
三、使用解碼器播放音樂
????????使用音頻解碼模塊 + 功放+儲(chǔ)存模塊,這種方法在STM32中比較常見,在低端單片機(jī)中并不多見,使用VS1053 + 內(nèi)存卡模塊進(jìn)行實(shí)時(shí)音頻輸出,再經(jīng)過功放放大推動(dòng)喇叭,這種方法僅適用于高端單片機(jī),其不僅對(duì)單片機(jī)性能要求高,對(duì)硬件電路設(shè)計(jì),和開發(fā)者水平同樣有高要求。
????????在Arduino中,使用這種方式驅(qū)動(dòng)代碼復(fù)雜,不同型號(hào)解碼器驅(qū)動(dòng)方式大不相同,故此處不列出參考代碼。
對(duì)于這用播放音樂的方式:
優(yōu)點(diǎn)有:
缺點(diǎn)有:
四、總結(jié)
????????綜合以上
????????在2021年的今天使用蜂鳴器播放音樂,不僅麻煩,需要將音頻文件轉(zhuǎn)換為頻率文件,還要浪費(fèi)單片機(jī)昂貴的儲(chǔ)存空間(如果使用內(nèi)存卡,內(nèi)存卡還需要內(nèi)存卡模塊,價(jià)格就上來了,使用EEPROM或flash,開發(fā)者還需要了解如何燒錄這類芯片),冒著開發(fā)版燒毀的風(fēng)險(xiǎn),(給你推薦這種教程的都沒按什么好心);
????????而使用專用的驅(qū)動(dòng)芯片和內(nèi)存卡進(jìn)行音頻的播放,意義更多在于演示,無論價(jià)格還是資源占用上,亦或是對(duì)開發(fā)者知識(shí)儲(chǔ)備的要求,都不是最優(yōu)解;
????????使用MP3模塊,價(jià)格方面不高也不低,對(duì)于知識(shí)儲(chǔ)備要求極低。(只要你會(huì)拉高拉低單片機(jī)IO電平都能上手,這個(gè)在入門教程的blink中已經(jīng)教授給你了)
五、概括
????????蜂鳴器適合播放提示音,價(jià)格最低,音質(zhì)最差,操作麻煩
????????MP3模塊適合播放長短音頻,價(jià)格適中,音質(zhì)中等,操作簡單
????????音頻解碼器適合播放高品質(zhì)或多聲道音頻,價(jià)格昂貴,音質(zhì)最好,操作復(fù)雜
總結(jié)
以上是生活随笔為你收集整理的如何给Arduino项目添加音乐播放功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql100个优化技巧_完整篇:10
- 下一篇: 计算机软件专利申请期限,软件发明专利申请