国产视频一区在线,日韩三级网,日韩欧美在线观看一区二区,午夜欧美福利视频,国产人妖视频一区二区,久久亚洲精品中文字幕,国产成人午夜高潮毛片

基于Arduino的電子音樂發(fā)聲器設(shè)計(jì)

來源:網(wǎng)絡(luò)

點(diǎn)擊:1840

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞: Arduino,電子音樂發(fā)聲器

    引言

    Arduino是一個(gè)基于開放原始代碼的Simple I/O平臺(tái),由硬件(MCU及外圍電路)和軟件(編程接口和語言)兩部分組成。它基于單片機(jī)系統(tǒng)開發(fā),具有使用簡(jiǎn)單,功能多樣,價(jià)格低廉等優(yōu)點(diǎn),廣泛應(yīng)用于電子系統(tǒng)設(shè)計(jì)和互動(dòng)產(chǎn)品開發(fā)方面。目前市場(chǎng)所見電子音樂發(fā)聲器調(diào)節(jié)不便,價(jià)格較高,不能很好地實(shí)現(xiàn)和使用者的交互。本電子音樂發(fā)聲器的設(shè)計(jì)以ArduinoUNO板為控制核心,在相關(guān)樂理基礎(chǔ)知識(shí)上,充分利用Arduino編輯器自帶Tone擴(kuò)展庫,以數(shù)組形式輸出各音符的指定頻率和節(jié)拍,送到無源蜂鳴器和彩色LED,實(shí)現(xiàn)了音樂播放和隨音樂節(jié)奏亮滅的LED效果。在操作方面,可以通過簡(jiǎn)單修改數(shù)組數(shù)據(jù)(音高和節(jié)拍)實(shí)現(xiàn)電子音樂的DIY,在欣賞美妙音樂的同時(shí),充分發(fā)揮使用者的創(chuàng)造性。


    1 系統(tǒng)硬件設(shè)計(jì)

    本發(fā)聲器以ArduinoUNO為控制核心,外部電路包括控制電路、蜂鳴器電路、LED顯示節(jié)奏電路,系統(tǒng)硬件電路圖如圖1所示。開關(guān)S1對(duì)整個(gè)電路起控制作用,當(dāng)檢測(cè)到開關(guān)按下,即D3端口為高電平時(shí),電路開始工作。預(yù)先組織好的音符數(shù)據(jù)(音高和節(jié)拍)通過數(shù)字端口D8發(fā)送到5V無源蜂鳴器J1,無源蜂鳴器接收到特定頻率的(即特定的音高)方波去驅(qū)動(dòng)它,可以發(fā)出“Do Re Mi Fa Sol La Si”的音樂效果。各數(shù)據(jù)加上延時(shí)(即節(jié)拍數(shù)據(jù))即可實(shí)現(xiàn)樂曲的播放。無源蜂鳴器的優(yōu)點(diǎn)是聲音頻率可控,可以和LED復(fù)用一個(gè)控制口。所以,D8端口的數(shù)據(jù)同時(shí)加到LED1、LED2、LED3上時(shí),其節(jié)奏性的亮滅實(shí)現(xiàn)了節(jié)拍的顯示。


    基于Arduino的電子音樂發(fā)聲器設(shè)計(jì)


    2 軟件設(shè)計(jì)

    2.1 樂曲播放原理

    2.1.1 單音符的演奏原理

    一首樂曲由若干音符組成。從物理的角度來說,每一個(gè)音符唯一對(duì)應(yīng)一個(gè)發(fā)聲頻率。Arduino只要把這個(gè)頻率數(shù)據(jù)發(fā)送給蜂鳴器或喇叭,就會(huì)發(fā)出對(duì)應(yīng)的音符。Arduino IDE自帶的頭文件“pitches.h”中以宏定義的形式給出了各個(gè)音符和頻率的對(duì)應(yīng)關(guān)系表。例如“#define NOTE_C4 262”語句給出了鋼琴標(biāo)準(zhǔn)鍵盤小字一組C4(唱名為Do)按鍵對(duì)應(yīng)的頻率是262Hz。因此,只要能夠識(shí)別給定的樂譜,就能得到一組對(duì)應(yīng)該樂曲的頻率數(shù)據(jù),即制作出其數(shù)組形式的韻律函數(shù)。

    2.1.2 節(jié)拍

    除了音高,構(gòu)成旋律的另一個(gè)重要因素是節(jié)拍,即音符演奏的持續(xù)時(shí)間。它決定了音樂進(jìn)行的快慢程度。本發(fā)聲器的設(shè)計(jì)中,通過讀取旋律的節(jié)拍速度,來確定基本的延時(shí)單位。如二分音符為一拍,每拍延時(shí)1/2秒,則四分音符延時(shí)1/4秒,八分音符延時(shí)為1/8秒,均為基本延時(shí)的偶數(shù)倍。最終,采用了noteDurations[thisNote]數(shù)組來存放每個(gè)音符的節(jié)拍數(shù)據(jù)。在應(yīng)用過程中,我們也可以通過調(diào)節(jié)基本延時(shí)來調(diào)節(jié)樂曲速度。頻率數(shù)據(jù)按照節(jié)拍數(shù)據(jù)的延時(shí)來驅(qū)動(dòng)蜂鳴器,就實(shí)現(xiàn)了一首樂曲的播放。


    基于Arduino的電子音樂發(fā)聲器設(shè)計(jì)


    2.2 樂曲播放的軟件實(shí)現(xiàn)

    ArduinoIDE包含的Tone庫可以很方便地幫助用戶制作音樂。本設(shè)計(jì)主要采用了Tone(pin, frequency, duration)函數(shù)來產(chǎn)生電子音樂。此函數(shù)中,pin表示頻率數(shù)據(jù)的數(shù)字輸出接口,int型;frequency是音符頻率,int型;duration是節(jié)拍數(shù)據(jù),單位是毫秒,unsigned long型。只要把上述頻率和節(jié)拍數(shù)據(jù)連續(xù)賦值給Tone函數(shù),就可以實(shí)現(xiàn)樂曲的播放,系統(tǒng)軟件實(shí)現(xiàn)的程序流程圖見圖2。


    Arduino語言是以setup( )開頭,loop( )作為主體的一個(gè)程序構(gòu)架。本發(fā)聲器的軟件實(shí)現(xiàn)過程中, loop( )函數(shù)內(nèi)部包含了控制按鍵判斷函數(shù),樂曲播放函數(shù)和延時(shí)函數(shù)。其中,樂曲播放函數(shù)play( )是發(fā)聲器軟件實(shí)現(xiàn)的核心語句,函數(shù)內(nèi)所有語句周而復(fù)始地循環(huán)執(zhí)行。下面以《生日快樂歌》(簡(jiǎn)譜見圖3)的第一小節(jié)為例,給出了play( )函數(shù)的實(shí)現(xiàn)過程。


    基于Arduino的電子音樂發(fā)聲器設(shè)計(jì)


    int melody[] = {

    NOTE_G4,//5

    NOTE_G4,//5

    NOTE_A4,//6

    NOTE_G4,//5

    NOTE_C5,//1.

    NOTE_B4,//7

    0,

    ……};

    int noteDurations[] = {

    8,8,4,4,4,4,

    4,

    ……

    };

    void play()

    {

    for (int thisNote = 0; thisNote < 29; thisNote++)

    {

    int noteDuration = 1000/noteDurations[thisNote];

    tone(8, melody[thisNote],noteDuration);

    int pauseBetweenNotes = noteDuration * 1.30;

    delay(pauseBetweenNotes);

    noTone(8);

    }}


    3 結(jié)論

    本系統(tǒng)利用了目前較為流行的Arduino電子互動(dòng)平臺(tái),通過對(duì)ARDUINO IDE平臺(tái)進(jìn)行軟件開發(fā)來控制外圍部件,實(shí)現(xiàn)了電子音樂的播放和節(jié)奏的顯示。Arduino是基于源代碼的軟硬件平臺(tái),具有價(jià)格便宜,互動(dòng)多樣,支持實(shí)時(shí)ISP在線燒錄等特點(diǎn)。因此,本發(fā)聲器價(jià)格低廉,操作簡(jiǎn)單,編輯方便,節(jié)拍速度可以調(diào)節(jié),靈活性較高。該發(fā)聲器功能可以進(jìn)一步拓展,如果使用者具有一定的音樂素養(yǎng),可以實(shí)現(xiàn)電子音樂DIY,為生活添加樂趣。

    (審核編輯: 林靜)

    聲明:除特別說明之外,新聞內(nèi)容及圖片均來自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請(qǐng)聯(lián)系我們刪除。