該項(xiàng)目用于使用Arduino制作32頻段音頻(音樂(lè))頻譜分析儀/可視化器。
硬件組件:
- Arduino Nano R3× 1
- 電阻10k歐姆× 1
- 電阻4.75k歐姆× 3
- 電容器100 nF× 2
- 電阻100k歐姆× 2
- SparkFun按鈕開(kāi)關(guān)12mm× 1
- 32x8 LED矩陣顯示器× 1
手動(dòng)工具和制造機(jī)器:
- 烙鐵(通用)
該項(xiàng)目用于使用Arduino制作32頻段音頻(音樂(lè))頻譜分析儀。該項(xiàng)目的預(yù)期受眾是任何音頻愛(ài)好者,學(xué)生或初學(xué)者,他們對(duì)電子元件,Arduino和C編程有基本的了解。該項(xiàng)目中使用的組件是低成本的項(xiàng)目,易于組裝。
該頻譜分析儀的主要特點(diǎn):
- 使用易于安裝的庫(kù)“arduinoFFT”和“MD_MAX72xx”
- 支持五種不同的顯示模式,可通過(guò)按鈕切換
- 音頻信號(hào)的左右聲道都是混合的,這樣你就不會(huì)錯(cuò)過(guò)任何節(jié)拍
- 原型使用32x8 LED矩陣顯示器,這可以改變和輕松修改
- 音頻可以從耳機(jī)輸出或音樂(lè)系統(tǒng)/放大器的線路輸出饋送
電阻值不是很嚴(yán)格,您可以選擇任何最接近的值。請(qǐng)確保R1和R2(參考原理圖)具有相同的值。
程序流程圖:
系統(tǒng)描述:
Arduino板(ATmega328P)內(nèi)置模數(shù)轉(zhuǎn)換器(ADC),用于將輸入音頻信號(hào)轉(zhuǎn)換為數(shù)字樣本。ADC配置為采樣時(shí)鐘頻率為38.46khz的輸入信號(hào)。這是通過(guò)將ADC預(yù)分頻器配置為32來(lái)實(shí)現(xiàn)的。采樣頻率為38.64Khz意味著數(shù)字樣本可以再現(xiàn)高達(dá)19.32Kz(奈奎斯特定理)的輸入頻率,這對(duì)于音頻信號(hào)來(lái)說(shuō)已經(jīng)足夠了。
正如我在開(kāi)始時(shí)提到的,該項(xiàng)目的目的是顯示音頻音樂(lè)信號(hào)的頻譜。因此,左右音頻通道混合在一起并饋入ADC的A0模擬輸入。您可以使用音頻分配器電纜,以便您可以將相同的音樂(lè)同時(shí)饋送到頻譜分析儀和另一個(gè)放大器(如果需要)。
ADC配置為使用外部參考電壓。在這個(gè)項(xiàng)目中,參考電壓來(lái)自Arduino板上的3.3v穩(wěn)壓電源。當(dāng)模擬信號(hào)在零電壓電平之上和之下振蕩時(shí),我們需要在ADC的模擬輸入端產(chǎn)生直流偏置。這可確保ADC輸出不會(huì)截?cái)噍斎胄盘?hào)的負(fù)周期。相同的3.3v穩(wěn)定電壓由兩個(gè)電阻R1和R2分壓,然后饋入模擬輸入以進(jìn)行直流偏置。使用此直流偏置,即使輸入信號(hào)斷開(kāi),ADC也會(huì)在輸出中產(chǎn)生512。稍后在代碼中,這個(gè)由DC偏置引起的512被減去,使得讀數(shù)代表實(shí)際的輸入信號(hào)變化。
ArduinoFFT庫(kù)是將輸入模擬信號(hào)轉(zhuǎn)換為頻譜的代碼的核心。我發(fā)現(xiàn)這個(gè)庫(kù)易于使用,并為該項(xiàng)目生成了最準(zhǔn)確的輸出。Prototype配置為生成64個(gè)樣本,并使用這些樣本進(jìn)行FFT。ArduinoFFT庫(kù)可以對(duì)16到128之間的樣本進(jìn)行FFT,這可以在程序中進(jìn)行配置。但arduinoFFT庫(kù)計(jì)算速度慢,有128個(gè)樣本,因此我堅(jiān)持64個(gè)樣本中最好的最高。
本項(xiàng)目使用的顯示為32列×8行LED矩陣。MD_MAX72xx庫(kù)使顯示控制部件非常容易。該庫(kù)提供打開(kāi)/關(guān)閉該程序中正在使用的列中任意數(shù)量的LED的功能。每個(gè)頻帶的幅度被映射在0到8之間,這取決于每個(gè)列中的LED的相應(yīng)數(shù)量的LED被接通。
該程序提供五種顯示模式,基本上通過(guò)在每列的不同位置打開(kāi)/關(guān)閉LED來(lái)實(shí)現(xiàn)。您可以輕松修改/創(chuàng)建不同的模式。這里使用按鈕來(lái)改變顯示模式,轉(zhuǎn)動(dòng)顯示圖案移動(dòng)到下一個(gè),最后重置為默認(rèn)模式。按鈕連接到其中一個(gè)數(shù)字輸入,并在每一輪顯示刷新后掃描該輸入。
頻率響應(yīng):
經(jīng)驗(yàn)證,系統(tǒng)能夠響應(yīng)高達(dá)18.6Khz的頻率。