RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【FireBeetle 2 ESP32-S3開發(fā)板測評(píng)】MIDI音樂播放器

嵌入式USB開發(fā) ? 來源:嵌入式USB開發(fā) ? 作者:嵌入式USB開發(fā) ? 2023-07-23 09:01 ? 次閱讀

前言

本片我們使用PWM輸出不同頻率占空比的信號(hào)來驅(qū)動(dòng)喇叭,實(shí)現(xiàn)MIDI音樂播放器的Demo。

PWM驅(qū)動(dòng)喇叭原理

PWM驅(qū)動(dòng)喇叭有兩種方法

一種是PWM-ADC方法,即控制PWM占空比實(shí)現(xiàn)不同電壓等級(jí)的輸出,來模擬DAC的輸出;

一種是控制PWM頻率,直接播放數(shù)字MIDI音樂即不同頻率代表不同的音調(diào)。

我們這里采用第二種方式來實(shí)現(xiàn)音樂播放。

以國際標(biāo)準(zhǔn)音A-la-440HZ為準(zhǔn):

do的頻率為261.6HZ,

re的頻率為293.6HZ,

mi的頻率為329.6HZ,

fa的頻率為349.2HZ,

sol的頻率為392HZ,

la的頻率為440HZ,

si的頻率為493.8HZ。

我們升一個(gè)八度則

Do頻率為261.6x2=523.2Hz,其他的類推。

控制PWM頻率就可以輸出上述音調(diào),控制PWM占空比則可對(duì)應(yīng)聲音的大小,播放時(shí)間長度則可對(duì)應(yīng)音節(jié)時(shí)長。

以兩只老虎為例
圖片16.png

播放音樂需要三個(gè)參數(shù)

頻率:beepfrep對(duì)應(yīng)音調(diào)

聲音大小: beepduty 占空比

播放時(shí)間: beeptime 對(duì)應(yīng)節(jié)拍

簡譜中可以看到

2/4拍子 4分音符一拍 每小節(jié)2拍

一分鐘76拍。

圖片17.png

于是可以定義音調(diào)和上述參數(shù)如下

DO = 523

RE = 587

MI = 659

FA = 698

_SO = 392

SO = 784

LA = 880

SI = 987

NO = 523

DUTY0 = 0

METERS = 76 #拍數(shù)76 1分鐘76拍 每拍60/76秒

#2/4  4分音符一拍 每小節(jié)2拍

NOTE_4 = (60/METERS) #先定一拍對(duì)應(yīng)的音符 4分音符

NOTE_8 = (NOTE_4/2) # 8分音符 一個(gè)下劃線

NOTE_16 = (NOTE_8/2) # 16分音符 二個(gè)下劃線

beepfrep = [DO,RE,MI,DO,

DO,RE,MI,DO,

MI,FA,SO,NO,

MI,FA,SO,NO,

SO,LA,SO,FA,MI,DO,

SO,LA,SO,FA,MI,DO,

DO,_SO,DO,NO,

DO,_SO,DO,NO]

beepduty = [400,400,400,400,

400,400,400,400,

400,400,400,DUTY0,

400,400,400,DUTY0,

400,400,400,400,400,400,

400,400,400,400,400,400,

400,400,400,DUTY0,

400,400,400,DUTY0,

]

beeptime = [NOTE_8,NOTE_8,NOTE_8,NOTE_8,

NOTE_8,NOTE_8,NOTE_8,NOTE_8,

NOTE_8,NOTE_8,NOTE_8,NOTE_8,

NOTE_8,NOTE_8,NOTE_8,NOTE_8,

NOTE_16,NOTE_16,NOTE_16,NOTE_16,NOTE_8,NOTE_8,

NOTE_16,NOTE_16,NOTE_16,NOTE_16,NOTE_8,NOTE_8,

NOTE_8,NOTE_8,NOTE_8,NOTE_16,

NOTE_8,NOTE_8,NOTE_8,NOTE_16,

]

代碼

完整代碼如下

import time
from machine import Pin, PWM
pwm = PWM(Pin(21))

DO = 523
RE = 587
MI = 659
FA = 698
_SO = 392
SO = 784
LA = 880
SI = 987
NO = 523
DUTY0 = 0
METERS = 76 #拍數(shù)76 1分鐘76拍 每拍60/76#2/4  4分音符一拍 每小節(jié)2拍
NOTE_4 = (60/METERS) #先定一拍對(duì)應(yīng)的音符 4分音符
NOTE_8 = (NOTE_4/2) # 8分音符 一個(gè)下劃線
NOTE_16 = (NOTE_8/2) # 16分音符 二個(gè)下劃線

beepfrep = [DO,RE,MI,DO,
DO,RE,MI,DO,
MI,FA,SO,NO,
MI,FA,SO,NO,
SO,LA,SO,FA,MI,DO,
SO,LA,SO,FA,MI,DO,
DO,_SO,DO,NO,
DO,_SO,DO,NO]

beepduty = [400,400,400,400,
400,400,400,400,
400,400,400,DUTY0,
400,400,400,DUTY0,
400,400,400,400,400,400,
400,400,400,400,400,400,
400,400,400,DUTY0,
400,400,400,DUTY0,
]

beeptime = [NOTE_8,NOTE_8,NOTE_8,NOTE_8,
NOTE_8,NOTE_8,NOTE_8,NOTE_8,
NOTE_8,NOTE_8,NOTE_8,NOTE_8,
NOTE_8,NOTE_8,NOTE_8,NOTE_8,
NOTE_16,NOTE_16,NOTE_16,NOTE_16,NOTE_8,NOTE_8,
NOTE_16,NOTE_16,NOTE_16,NOTE_16,NOTE_8,NOTE_8,
NOTE_8,NOTE_8,NOTE_8,NOTE_16,
NOTE_8,NOTE_8,NOTE_8,NOTE_16,
]

while(1):
    for i in range(len(beepfrep)):
        pwm.freq(beepfrep[i])
        pwm.duty_u16(beepduty[i])
        time.sleep(beeptime[i])

測試

接上喇叭,這里使用了功放

PWM使用P21
圖片18.png

運(yùn)行程序

圖片19.png

可以聽到演奏的效果,詳細(xì)見視頻。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 播放器
    +關(guān)注

    關(guān)注

    5

    文章

    397

    瀏覽量

    37409
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3614

    瀏覽量

    93685
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5032

    瀏覽量

    97371
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4779

    瀏覽量

    68519
  • 單板計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    15627
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    657

    瀏覽量

    32851
  • MIDI
    +關(guān)注

    關(guān)注

    0

    文章

    75

    瀏覽量

    15657
  • ESP32
    +關(guān)注

    關(guān)注

    18

    文章

    971

    瀏覽量

    17200
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FireBeetle 2 ESP32-S3開發(fā)板測評(píng)

    一. 開箱 FireBeetle 2 ESP32-S3是dfrobot基于ESP32-S3-WROOM-1-N16R8模組出品的一款小巧的開發(fā)板
    的頭像 發(fā)表于 07-23 16:23 ?1832次閱讀
    <b class='flag-5'>FireBeetle</b> <b class='flag-5'>2</b>  <b class='flag-5'>ESP32-S3</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>測評(píng)</b>

    FireBeetle 2 ESP32-S3開發(fā)板測評(píng)】Arduino IDE快速開發(fā)體驗(yàn)

    FireBeetle 2 ESP32-S3開發(fā)板測評(píng)】Arduino IDE快速開發(fā)體驗(yàn)
    的頭像 發(fā)表于 07-23 09:03 ?2554次閱讀
    【<b class='flag-5'>FireBeetle</b> <b class='flag-5'>2</b>  <b class='flag-5'>ESP32-S3</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>測評(píng)</b>】Arduino IDE快速<b class='flag-5'>開發(fā)</b>體驗(yàn)

    FireBeetle 2 ESP32-S3開發(fā)板測評(píng)】MicroPython開發(fā)體驗(yàn)

    FireBeetle 2 ESP32-S3開發(fā)板測評(píng)】MicroPython開發(fā)體驗(yàn)
    的頭像 發(fā)表于 07-23 09:02 ?1800次閱讀
    【<b class='flag-5'>FireBeetle</b> <b class='flag-5'>2</b> <b class='flag-5'>ESP32-S3</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>測評(píng)</b>】MicroPython<b class='flag-5'>開發(fā)</b>體驗(yàn)

    FireBeetle 2 ESP32-S3開發(fā)板測評(píng)MIDI音樂播放器

    播放器
    jf_1137202360
    發(fā)布于 :2023年07月22日 23:30:44

    FireBeetle 2 ESP32-S3開發(fā)板體驗(yàn)】使用PyCharm開發(fā)MicroPython體驗(yàn)

    ://wiki.dfrobot.com.cn/_SKU_DFR0975_FireBeetle_2_Board_ESP32_S3#target_0 由于最近在研究Python,所以拿到開發(fā)板就想著折騰一下,利用所學(xué)進(jìn)行開發(fā)板
    發(fā)表于 07-28 11:43

    FireBeetle 2 ESP32-S3開發(fā)板體驗(yàn)】1、資料獲取、環(huán)境、固件燒寫、點(diǎn)燈。

    1、開發(fā)板資料獲?。篋FROBOT DFR0975 FireBeetle 2 Board ESP32-S3 產(chǎn)品資料 使用教程 2、我準(zhǔn)備用
    發(fā)表于 07-28 17:36

    FireBeetle 2 ESP32-S3開發(fā)板體驗(yàn)】時(shí)間顯示 基于ssd1306 I2C 調(diào)用開源庫 事半功倍

    時(shí)間顯示 基于ssd1306 I2C 調(diào)用開源庫 事半功倍 簡介 FireBeetle 2 ESP32-S3可以使用Arduino IDE、ESP
    發(fā)表于 07-29 10:04

    FireBeetle 2 ESP32-S3開發(fā)板體驗(yàn)】測評(píng)1_搭建開發(fā)環(huán)境

    第1章 開發(fā)板開箱以及開發(fā)環(huán)境搭建 感謝電子發(fā)燒友社區(qū)提供的測評(píng)機(jī)會(huì),參加DFRobot 的FireBeetle 2
    發(fā)表于 07-29 21:40

    FireBeetle 2 ESP32-S3開發(fā)板體驗(yàn)】001:開箱+搭建Arduino開發(fā)環(huán)境

    、FireBeetle 2 Board ESP32 S3引腳示意該開發(fā)板相關(guān)資料在官方頁面都有提供,內(nèi)容非常詳細(xì),對(duì)
    發(fā)表于 07-29 22:22

    FireBeetle 2 ESP32-S3開發(fā)板體驗(yàn)】在Arduino中充分利用FireBeetle 2 ESP32-S3的16MB Flash做SPIFFS

    DFRobot提供的這款 FireBeetle 2 ESP32-S3 開發(fā)板,從官方WiKi上,可以了解到詳細(xì)的硬件信息: 處理:Xten
    發(fā)表于 08-02 09:55

    合宙ESP32-S3開發(fā)板特性解讀

    穿越萬水千山,奔赴與工程師朋友的約定——合宙ESP32-S3超值MCU開發(fā)板,來了! 1 合宙ESP32-S3開發(fā)板簡介 合宙CORE-ESP32S
    的頭像 發(fā)表于 01-11 18:45 ?1w次閱讀

    新品上市 | 合宙ESP32-S3開發(fā)板

    穿越萬水千山,奔赴與工程師朋友的約定——合宙ESP32-S3超值MCU開發(fā)板,來了!1合宙ESP32-S3開發(fā)板簡介合宙CORE-ESP32S3
    的頭像 發(fā)表于 01-13 15:53 ?3079次閱讀
    新品上市 | 合宙<b class='flag-5'>ESP32-S3</b><b class='flag-5'>開發(fā)板</b>

    基于ESP32S3系列模組的開發(fā)板

    基于ESP32S3系列模組的開發(fā)板
    的頭像 發(fā)表于 04-10 11:25 ?3944次閱讀
    基于<b class='flag-5'>ESP32S3</b>系列模組的<b class='flag-5'>開發(fā)板</b>

    基于ESP32-S3的高性能開發(fā)板介紹

    FireBeetle 2 ESP32-S3是一款基于ESP32-S3-WROOM-1-N16R8模組設(shè)計(jì)的主控
    的頭像 發(fā)表于 09-05 11:33 ?9998次閱讀
    基于<b class='flag-5'>ESP32-S3</b>的高性能<b class='flag-5'>開發(fā)板</b>介紹

    Banana Pi 開源硬件基于ESP32-S3開發(fā)的物聯(lián)網(wǎng)開發(fā)板系列

    Banana Pi 開源硬件基于ESP32-S3開發(fā)的物聯(lián)網(wǎng)開發(fā)板系列
    的頭像 發(fā)表于 09-28 16:21 ?1158次閱讀
    Banana Pi 開源硬件基于<b class='flag-5'>ESP32-S3</b><b class='flag-5'>開發(fā)</b>的物聯(lián)網(wǎng)<b class='flag-5'>開發(fā)板</b>系列
    RM新时代网站-首页