一個(gè)使用OLED顯示器和FFT庫(kù)生成音頻頻譜的小工具。為您的音樂(lè)增添一抹生機(jī)。
硬件部件:
- Arduino Nano R3 × 1個(gè)
- Oled黃藍(lán)色顯示128x64 I2C(SH1106驅(qū)動(dòng)程序)× 1個(gè)
- 電阻4.75k歐姆 × 3
- 電阻100k歐姆 × 2
- 電容100 nF × 2
- 電容器47 µF × 1個(gè)
只是一個(gè)簡(jiǎn)單的小工具
使用任何Arduino模型和ArduinoFFT庫(kù)(一個(gè)0.96英寸的雙色OLED顯示屏),您都可以制造出這種漂亮的光譜儀,這是經(jīng)典VU儀表的有趣替代品。
在試驗(yàn)板上進(jìn)行試驗(yàn)后,我制作了一個(gè)獨(dú)立的原型,燃燒了ATmega328,在原始照片中清晰可見(jiàn)。
問(wèn)題在于能夠?qū)⒋a放入Arduino內(nèi)存中,因?yàn)榇蠖鄶?shù)內(nèi)存都由顯示幀緩沖區(qū)占用。在這方面,我建議您使用I2C SH1106顯示器。我沒(méi)有嘗試過(guò)使用硬件,但是SSD1306模型庫(kù)顯然在編譯時(shí)僅占用較少的內(nèi)存,但是一旦執(zhí)行了草圖,它就會(huì)停止,僅用于在運(yùn)行時(shí)創(chuàng)建緩沖區(qū)。
市場(chǎng)上有相同的顯示器,但VCC和GND引腳接反了,所以要小心。
觀察代碼,您會(huì)發(fā)現(xiàn)繪制豎線的循環(huán)從值2而不是零開(kāi)始。這不是疏忽,但我故意這樣做是因?yàn)橐韵潞?jiǎn)單原因,即前兩個(gè)采樣頻帶包含太多的低頻噪聲。可能也是因?yàn)槲覍⑵溥B接到PC的音頻輸出,并且存在阻抗匹配問(wèn)題。此外,奇怪的是,我購(gòu)買(mǎi)的顯示器的水平分辨率為127像素(從0到126),而不是如上所述的128,如果您嘗試寫(xiě)入第127列,則將其繪制在顯示器的左側(cè),即第0列之前。這可能是由SH1106庫(kù)引起的,該庫(kù)基本上是經(jīng)過(guò)修改的Adafruit_SSD1306庫(kù)。