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