日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

如何给Arduino项目添加音乐播放功能

發(fā)布時間:2023/12/10 138 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何给Arduino项目添加音乐播放功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

(以下教程僅針對Arduino UNO、Arduino Nano等使用Atmel328P為核心的開發(fā)板)

一、蜂鳴器播放音樂

????????說起單片機播放音樂,大家第一個想到的應(yīng)該是無源蜂鳴器或喇叭。( 因無源蜂鳴器的工作原理與揚聲器相同,此處混為一談,但實際使用仍有區(qū)別 ),無論是51、Arduino、亦或是STM32,在入門時期都會使用蜂鳴器進行播放音樂。無源蜂鳴器的應(yīng)用非常廣泛,小到電子賀卡,玩具,大到上世紀的康瑞達電腦,都使用無源蜂鳴器進行發(fā)聲或音樂的播放。

在Arduino中,經(jīng)常使用以下的函數(shù)驅(qū)動蜂鳴器:

Tone(蜂鳴器引腳, 輸出的頻率);// 在指定的引腳輸出指定的頻率使蜂鳴器發(fā)聲 noTone(蜂鳴器引腳); // 停止指定引腳的PWM輸出,使蜂鳴器不發(fā)聲

對于這用播放音樂的方式:

優(yōu)點有:

  • 成本低廉,通常只需要蜂鳴器即可,對于更高的要求和更高的聲音要求,只需要添加三極管和電阻,再加一個二極管保護即可。
  • 電路設(shè)計簡單,
  • 缺點有:

  • 占用非常多的資源,你需要一個定時器用于輸出PWM,一定的空間(內(nèi)部RAM\ROM或外部ROM)
  • 需要占用大部分的系統(tǒng)時間,進行頻率切換等
  • 由于Arduino沒有DAC,播放的音樂只是勉強能聽,方波輸出,和模擬輸出仍有較大差別
  • 對于某些IO直接驅(qū)動蜂鳴器、揚聲器的教程,對于開發(fā)版而言就是炸彈,輕則燒毀IO,重則帶走開發(fā)版及傳感器(此處涉及電感的相關(guān)知識,有興趣的小伙伴可以去觀看B站up 羅茲新一期關(guān)于繼電器的視頻)
  • 二、MP3模塊播放音樂

    ????????在今天,國產(chǎn)的MP3模塊已經(jīng)非常流行了如JQ6500、JQ8900等,使用MP3模塊連接單片機,既可以簡單的播放音樂,又可以控制EQ、音量、隨意暫停播放插播歌曲、查詢歌曲名字、歌曲時長等。他的操作如同老式MP3,只需要將他連接到電腦,存放歌曲即可。

    在Arduino中,經(jīng)常使用以下的函數(shù)驅(qū)動MP3模塊:

    // 使用串口控制 dat = Serial.read(); Serial.write(dat); // IO或單總線方式控制 delay(ms); delayMicroseconds(us); digitalWrite(io, LOW); digitalWrite(io, HIGH);

    對于這用播放音樂的方式:

    優(yōu)點有:

  • 占用IO少,一個IO即可播放上百首音樂
  • 占用資源少,MP3模塊支持IO觸發(fā)、單總線控制、串口控制等,哪怕是手動用開關(guān)都能控制,也不需要使用單片機昂貴的空間儲存音頻文件。
  • 音頻播放效果好,對比蜂鳴器,簡直天差地別
  • 音量大小可調(diào),更換音頻文件不需要重新燒錄程序
  • 電路設(shè)計簡單
  • 缺點有:

  • 對比蜂鳴器,價格確實是貴了點,一套下來基本要10元左右
  • 功耗更大,由于有了專用的功放和DSP、DAC等電路,功耗相比蜂鳴器會更大
  • 三、使用解碼器播放音樂

    ????????使用音頻解碼模塊 + 功放+儲存模塊,這種方法在STM32中比較常見,在低端單片機中并不多見,使用VS1053 + 內(nèi)存卡模塊進行實時音頻輸出,再經(jīng)過功放放大推動喇叭,這種方法僅適用于高端單片機,其不僅對單片機性能要求高,對硬件電路設(shè)計,和開發(fā)者水平同樣有高要求。

    ????????在Arduino中,使用這種方式驅(qū)動代碼復(fù)雜,不同型號解碼器驅(qū)動方式大不相同,故此處不列出參考代碼。

    對于這用播放音樂的方式:

    優(yōu)點有:

  • 不僅支持音頻解碼,同時還支持音頻編碼,說人話就是支持錄音和播音。
  • 音頻質(zhì)量會比MP3模塊的好。
  • 支持雙聲道甚至更高的聲道數(shù)。
  • 缺點有:

  • 價格昂貴,需要多個芯片的配合
  • 對單片機和開發(fā)者要求高
  • 電路設(shè)計復(fù)雜
  • 四、總結(jié)

    ????????綜合以上

    ????????在2021年的今天使用蜂鳴器播放音樂,不僅麻煩,需要將音頻文件轉(zhuǎn)換為頻率文件,還要浪費單片機昂貴的儲存空間(如果使用內(nèi)存卡,內(nèi)存卡還需要內(nèi)存卡模塊,價格就上來了,使用EEPROM或flash,開發(fā)者還需要了解如何燒錄這類芯片),冒著開發(fā)版燒毀的風險,(給你推薦這種教程的都沒按什么好心);

    ????????而使用專用的驅(qū)動芯片和內(nèi)存卡進行音頻的播放,意義更多在于演示,無論價格還是資源占用上,亦或是對開發(fā)者知識儲備的要求,都不是最優(yōu)解;

    ????????使用MP3模塊,價格方面不高也不低,對于知識儲備要求極低。(只要你會拉高拉低單片機IO電平都能上手,這個在入門教程的blink中已經(jīng)教授給你了)

    五、概括

    ????????蜂鳴器適合播放提示音,價格最低,音質(zhì)最差,操作麻煩

    ????????MP3模塊適合播放長短音頻,價格適中,音質(zhì)中等,操作簡單

    ????????音頻解碼器適合播放高品質(zhì)或多聲道音頻,價格昂貴,音質(zhì)最好,操作復(fù)雜

    總結(jié)

    以上是生活随笔為你收集整理的如何给Arduino项目添加音乐播放功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。