欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

使用Raspberry Pi和Arduino Uno構(gòu)建波表合成器

王婷 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-02-24 18:16 ? 次閱讀

這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。

不久前,我們研究了如何使用Raspberry PiI2C總線來控制Arduino Uno,以及如何使用它來輸出模擬電壓。

令人興奮的是,完成這些項目后,您就已經(jīng)掌握構(gòu)建一個簡單合成器的大部分方法了。

并且一家名叫dzl的制造商已經(jīng)發(fā)布了一組名為the_synth的Arduino庫,我們可以馬上安裝并使用該庫。

那么,就讓我們來一起完成這個項目吧!現(xiàn)在,我們來構(gòu)建一個波表合成器。

“波表”合成器是什么意思?

一個波表合成器可以將一系列簡單波形以不同電壓電平波表文件的形式存儲在存儲器中。

合成器將這些電壓以不同的速率輸出,來產(chǎn)生相應(yīng)頻率的音調(diào)。

我們只需要存儲每種波形的一個周期,這是一種可以高效節(jié)省內(nèi)存的方法,因此非常適用于內(nèi)存有限的簡單微控制器。

在the_synth里,您可以在tables.h文件中找到波表。您也可以通過編輯該文件來創(chuàng)建自己的波表。

然后,我們通過把Arduino Uno的PWM硬件連接到低通濾波器,將內(nèi)存中的這些數(shù)值轉(zhuǎn)換為模擬電壓,如之前的項目中所描述的那樣。

所需部件

Raspberry Pi pYYBAGPzHJaAV0IhAAL_fUrM_so188.png
一個GPIO擴展板 poYBAGPzHJyAVJWrAAQj28sM2z4210.jpg
一個無焊面包板 poYBAGPzHJ-AJbiYAAGD-2hBFV4363.png
一個Arduino Uno poYBAGPy0h-AKVGzAACK9V2MX8I102.png
一個1k歐姆電阻 poYBAGPzHKSAekkWAADEVtEjlfc774.png
一個10nF電容 pYYBAGPzHKaAC1AtAACDyeXuxhk200.png
一個220uF電容 poYBAGPzHKqAWvczAAH4tNzbsZQ790.png
一個有源揚聲器 pYYBAGPzHK6ACfpxAANhvpqkou4780.jpg

最好不要使用昂貴的有源揚聲器來構(gòu)建和測試DIY合成器或音頻項目。雖然這樣的電路不一定會損壞您的東西,但是為什么要冒險呢?

我一直使用的都是從二手商店花5美元購買的大型舊固態(tài)高保真音響。一些舊的電腦揚聲器也是不錯的選擇。

安裝示例

The_synth附帶了許多示例用于演示其使用方法,我們可以直接使用它們。在深入研究代碼之前,我們先試一下其中一個示例。

如果想要在您的Arduino IDE中安裝庫和其中的示例,請前往 https://github.com/dzlonline/the_synth并點擊在頁面右上方標(biāo)有Code.的綠色按鈕。

poYBAGPzHLKAW01sAAFgvxltZvA544.png

點擊Download ZIP,并保存該文件。

現(xiàn)在打開Arduino IDE。在Sketch菜單中,將光標(biāo)放在Include Library處,然后點擊Add .ZIP library…。
pYYBAGPzHLeAI6zaAAOXoPrSzjs143.png

找到我們之前保存的.zip文件,選擇它并點擊“OK”。

poYBAGPzHLqADe8_AADSwFP4cDI249.jpg

您現(xiàn)在已經(jīng)成功將the_synth安裝到了您的IDE中,并且可以從菜單中訪問庫和示例了。讓我們試試any_hertz示例,它可以循環(huán)遍歷四種不同的頻率。

pYYBAGPzHL2AZR9UAAEEkEpgwgs006.jpg

您可以打開“File”菜單,將鼠標(biāo)停留在Examples處,然后滾動到底部至the_synth-master.找到該示例。將鼠標(biāo)停留在該選擇上,并點擊any_hertz來打開草圖。

現(xiàn)在通過USB連接Arduino Uno,請再次確認(rèn)您選擇了Arduino Uno,確認(rèn)后上傳草圖。

接線

現(xiàn)在,我們需要將Arduino Uno連接到一個簡單的低通濾波器,就像之前構(gòu)建項目中所做的那樣,然后將它連接到我們的揚聲器。

首先,從連接電源引腳開始:

poYBAGPzHMCANT98AAKxg9PV3K4162.png
將引腳11(即PWM引腳)連接到面包板的中間。我們還需要接地來構(gòu)建低通濾波器,因此將接地引腳連接到負(fù)電源軌。
pYYBAGPzHMSAdSnuAALVndjQNss396.png

現(xiàn)在構(gòu)建低通濾波器。將1k電阻連接到PWM引腳,然后將10nF電容連接到電阻的另一端和接地軌,如下所示:

poYBAGPzHMiASV7nAALS_sJFMRg092.png

現(xiàn)在我們需要一個耦合電容器,以確保不會通過任何直流電。需要記住的一點是電解電容器是有極性的,因此請將陽極(較長端)連接到低通濾波器,另一端連接到面包板下方。
pYYBAGPzHMyAP07CAALcdLrcTC4231.png

將揚聲器連接到耦合電容器的陰極,如有需要可以接地。

如果您已經(jīng)正確完成了所有連接,您現(xiàn)在將會聽到一組包含四種音調(diào)的聲音。

使用I2C 和Raspberry Pi控制合成器

您現(xiàn)在可以聽到自己所構(gòu)建的波表合成器所發(fā)出的聲音了,是不是很酷?

但只是一遍又一遍地聽著這四種音調(diào)并不是很有趣。我們想要能夠使用Raspberry Pi對其進(jìn)行控制。

我們可以在I2C總線上使用Arduino的Wire庫和Python中的SMBus模塊(我們之前介紹過)來完成此操作。

對Arduino Uno編程

我們真正需要做的是將這個any_hertz示例和之前編寫的I2C程序整合在一起,以播放我們發(fā)送的音符。
我們先導(dǎo)入I2C和synth庫。
#include
#include

每個Arduino草圖都需要一個設(shè)置函數(shù),在我們的設(shè)置函數(shù)中,需要完成三件事情:作為從機加入I2C總線;初始化我們的合成器;以及在收到I2C指令時調(diào)用另一個函數(shù)。
我們可以按照如下所示編寫:
void setup() {

edgar.begin(); //-Start up a synth
edgar.setupVoice(0,TRIANGLE,60,ENVELOPE1,127,64); //-Set up voice 0

Wire.begin(0x8); // Join the I2C Bus as a slave at address 0x8
Wire.onReceive(readInstruction); // On
}

現(xiàn)在我們需要編寫readInstruction()函數(shù)。該函數(shù)用于從I2C總線讀取一個數(shù)字。如果讀取了0,那么將不播放任何東西。如果讀取了1到8之間的數(shù)字,那么將會播放A1到A2之間的一個音符。
void readInstruction(int bitstream) {
byte option = Wire.read();
switch (option) {
case 0:
edgar.setFrequency(0, 0.0); // Play nothing
edgar.trigger(0);
break;
case 1:
edgar.setFrequency(0, 55.0); // Play A1
edgar.trigger(0);
break;
case 2:
edgar.setFrequency(0, 61.74); // Play B1
edgar.trigger(0);
break;
case 3:
edgar.setFrequency(0, 65.41); // Play C2
edgar.trigger(0);
break;
case 4:
edgar.setFrequency(0, 73.42); // Play D2
edgar.trigger(0);
break;
case 5:
edgar.setFrequency(0, 82.41); // Play E2
edgar.trigger(0);
break;
case 6:
edgar.setFrequency(0, 87.31); // Play F2
edgar.trigger(0);
break;
case 7:
edgar.setFrequency(0, 98.0); // Play G2
edgar.trigger(0);
break;
case 8:
edgar.setFrequency(0, 110.0); // Play A2
edgar.trigger(0);
break;
}
}

最后,每個Arduino草圖都需要一個循環(huán)函數(shù)。但實際上我們沒有需要循環(huán)運行的工作,所以我們只在其中寫入一個sleep函數(shù)。
void loop() {
sleep(10000);
}

保存該草圖,并將其上傳到您的Arduino Uno。

連接I2C總線

這部分內(nèi)容與我們在之前的文章中所介紹的完全相同:將Raspberry Pi的SDA引腳連接到Arduino Uno的A4引腳,將SCL引腳連接到A5引腳。
poYBAGPzHNGAM9k3AAMZrXEjRv0479.png

播放一首簡單的歌曲

現(xiàn)在讓我們用該項目來播放歌曲《Mary Had a Little Lamb》。
這首歌有兩種不同長度的音符:四分音符和半音符(或二分音符)。我們現(xiàn)在來編寫兩個快速函數(shù)來播放這些音符。
我們需要計時功能,因此在這里導(dǎo)入sleep函數(shù)。
from time import sleep

但是中間需要暫停多久?我們的歌曲是每分鐘122拍。根據(jù)該數(shù)值,我們可以計算出每個音符需要多少秒:四分音符是492微秒。我們在結(jié)尾處設(shè)置一段非常短的暫停,以便能夠在播放相同音調(diào)時分辨這些音符。
def playCrotchet(int pitch):
i2cbus.write_byte(pitch)
sleep(0.472)
i2cbus.write_byte(arduino, 0)
sleep(0.02)

現(xiàn)在我們來寫一個半音符函數(shù):

def playMinim(int pitch):
i2cbus.write_byte(pitch)
sleep(0.964)
i2cbus.write_byte(arduino, 0)
sleep(0.02)

然后:

def playMary():
playCrotchet(E2)
playCrotchet(D2)
playCrotchet(C2)
playCrotchet(D2)
playCrotchet(E2)
playCrotchet(E2)
playMinim(E2)
playCrotchet(D2)
playCrotchet(D2)
playMinim(D2)
playCrotchet(E2)
playCrotchet(G2)
playMinim(G2)
playCrotchet(E2)
playCrotchet(D2)
playCrotchet(C2)
playCrotchet(D2)
playCrotchet(E2)
playCrotchet(E2)
playCrotchet(E2)
playCrotchet(E2)
playCrotchet(D2)
playCrotchet(D2)
playCrotchet(E2)
playCrotchet(D2)
playMinim(C2)

想要播放該歌曲,請輸入:

playMary()

多嘗試一些內(nèi)容,看看有沒有什么新的想法。

下一步該做什么?

這是探索合成器構(gòu)建方法的一個很好的開端:您還可以基于該內(nèi)容制作一些很酷的低音線。
但是將所有音樂都寫成代碼是相當(dāng)麻煩的,而且我們目前只有有限的音符和簡單的波形。
接下來如果可以使用圖形界面以及改變音符的音色不是會更好么?
請繼續(xù)關(guān)注我們——我們將會很快進(jìn)行這些內(nèi)容的探索。

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 編輯團隊

設(shè)備升級版適用于所有熱愛電子和機電一體化的人。

審核編輯黃宇

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

    關(guān)注

    0

    文章

    273

    瀏覽量

    25470
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    187968
  • Raspberry Pi
    +關(guān)注

    關(guān)注

    2

    文章

    559

    瀏覽量

    22350
收藏 人收藏

    評論

    相關(guān)推薦

    使用 Arduino Nano 創(chuàng)建基于 DCO 的音頻合成器

    在這個項目中,學(xué)習(xí)使用Arduino Nano或Arduino Uno創(chuàng)建數(shù)字控制振蕩器或基于DCO的音頻合成器。 我喜歡音樂,我也喜歡電子。 多年來,我一直在制造音樂電子設(shè)備,主要是
    的頭像 發(fā)表于 05-03 16:03 ?1930次閱讀
    使用 <b class='flag-5'>Arduino</b> Nano 創(chuàng)建基于 DCO 的音頻<b class='flag-5'>合成器</b>

    低相噪毫米頻率合成器設(shè)計

    【作者】:廖梁兵;鄧賢進(jìn);張紅雨;【來源】:《信息與電子工程》2010年01期【摘要】:簡要介紹毫米頻率合成器的重要性,分析兩種毫米頻率合成器實現(xiàn)方案的優(yōu)劣,綜合其優(yōu)點,并采用直接
    發(fā)表于 04-22 11:47

    合成器

    1、使用反饋有一種設(shè)備與振蕩器有關(guān),.稱為合成器。在一些情況下,從普通振蕩器出來的正弦不夠完美。射頻工程師發(fā)現(xiàn)如果振蕩器與其它電路結(jié)合起來,利用反饋,可以使正弦更完美,這就適合成器
    發(fā)表于 12-06 14:06

    什么是頻率合成器

      頻率合成器是利用一個或多個基準(zhǔn)頻率,通過各種技術(shù)途徑產(chǎn)生一系列的離散頻率信號的設(shè)備。這些頻率的穩(wěn)定度和精度均和基準(zhǔn)頻率相同,而且頻率的轉(zhuǎn)換時間很短,這樣才會有效率和實用價值。  頻率合成器的實現(xiàn)
    發(fā)表于 08-19 19:18

    為Eurorack合成器構(gòu)建無源mult

    描述易歐元多易于為 Eurorack 合成器構(gòu)建無源 mult。包括用于 2 種不同前面板的 Gerber——用于 Eurorack 螺釘?shù)你@孔(孔)或銑削(橢圓)。
    發(fā)表于 09-01 06:18

    頻率合成器,頻率合成器原理及作用是什么?

    頻率合成器,頻率合成器原理及作用是什么? 所謂的頻率合成器,就是以一個精確度、穩(wěn)定度極好的石英晶體振蕩器作為基準(zhǔn)頻率,并利用加、減
    發(fā)表于 03-23 11:04 ?1.5w次閱讀

    集成鎖相環(huán)頻率合成器,什么是集成鎖相環(huán)頻率合成器

    集成鎖相環(huán)頻率合成器,什么是集成鎖相環(huán)頻率合成器 頻率合成的歷史 頻率合成器被人們喻為眾多電子系統(tǒng)
    發(fā)表于 03-23 11:45 ?831次閱讀

    Arduino UnoRaspberry Pi系列開發(fā)

    處理速度、響應(yīng)時間、I/O 能力是 SoM 的顯著特征。但是,嵌入式系統(tǒng)中經(jīng)常也會集成 SBC,例如 Arduino UnoRaspberry Pi 系列,因為這些產(chǎn)品同樣擁有廣
    的頭像 發(fā)表于 08-31 15:53 ?5731次閱讀

    Arduino合成器V3設(shè)計案例

    電子發(fā)燒友網(wǎng)站提供《Arduino合成器V3設(shè)計案例.zip》資料免費下載
    發(fā)表于 08-11 09:50 ?2次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>合成器</b>V3設(shè)計案例

    Arduino Nano構(gòu)建一個SN76489 USB MIDI合成器

    電子發(fā)燒友網(wǎng)站提供《用Arduino Nano構(gòu)建一個SN76489 USB MIDI合成器.zip》資料免費下載
    發(fā)表于 11-10 14:24 ?3次下載
    用<b class='flag-5'>Arduino</b> Nano<b class='flag-5'>構(gòu)建</b>一個SN76489 USB MIDI<b class='flag-5'>合成器</b>

    Lo Fi Arduino Nano合成器模塊

    電子發(fā)燒友網(wǎng)站提供《Lo Fi Arduino Nano合成器模塊.zip》資料免費下載
    發(fā)表于 11-16 15:10 ?0次下載
    Lo Fi <b class='flag-5'>Arduino</b> Nano<b class='flag-5'>合成器</b>模塊

    基于Arduino的頻率合成器

    方案介紹該項目的主要目標(biāo)是創(chuàng)建一個代碼,允許無線電愛好者從菜單配置合成器,而無需為特定任務(wù)對其進(jìn)行編程。合成器也可用于帶頻段切換的自制收發(fā)器。
    發(fā)表于 12-26 15:09 ?2次下載

    如何創(chuàng)建基于DCO的音頻合成器

    在此項目中,學(xué)習(xí)使用 Arduino Nano 或 Arduino Uno 創(chuàng)建數(shù)控振蕩器或基于 DCO 的音頻合成器。
    的頭像 發(fā)表于 04-13 10:04 ?1035次閱讀

    Arduino合成器

    電子發(fā)燒友網(wǎng)站提供《Arduino合成器.zip》資料免費下載
    發(fā)表于 06-29 10:04 ?1次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>合成器</b>

    Arduino Atari朋克合成器

    電子發(fā)燒友網(wǎng)站提供《Arduino Atari朋克合成器.zip》資料免費下載
    發(fā)表于 06-30 11:14 ?1次下載
    <b class='flag-5'>Arduino</b> Atari朋克<b class='flag-5'>合成器</b>