電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>具有顏色選擇的音頻頻譜可視化器

具有顏色選擇的音頻頻譜可視化器

2022-11-04 | zip | 0.05 MB | 次下載 | 2積分

資料介紹

描述

我對可尋址的“Neopixel”RGB LED 的可能性很感興趣。我想學(xué)習(xí)如何控制它們并在具有挑戰(zhàn)性的項(xiàng)目中使用它們。我讀過一些使用 LED 陣列和矩陣來表示音頻頻譜的項(xiàng)目,就像圖形均衡器上的照明顯示器一樣。

我想到了一些不同的東西。一個(gè)垂直的 LED 串怎么樣,低頻在底部,高頻在頂部,每個(gè)頻段的幅度會顯示為每個(gè) LED 的亮度?然后音樂將沿著這條弦“跳動(dòng)”。我當(dāng)然不是第一個(gè)想到或執(zhí)行它的人,但我還沒有看到這個(gè)特定的應(yīng)用程序。

如果 LED 的亮度由音樂控制,LED 的顏色可以由設(shè)備的用戶設(shè)置嗎?

這個(gè)怎么運(yùn)作

該設(shè)備的電路和代碼以兩種模式運(yùn)行。這些模式是通過前面板右側(cè)的模式開關(guān)選擇的。當(dāng)模式開關(guān)在左側(cè)位置時(shí),顏色設(shè)置模式被激活。

顏色設(shè)置模式允許用戶使用 5 個(gè)電位器設(shè)置 LED 燈條的顏色范圍。具體來說,從左到右,電位器調(diào)整:

1.數(shù)值——LED燈帶的整體亮度

2. 飽和度 - 此設(shè)置逐漸在鮮艷的色彩和純白色之間轉(zhuǎn)換色調(diào)

3. 頂部色調(diào) - 指定 LED 燈條頂部的色調(diào)(顏色)

4. 底部色調(diào) - 指定 LED 燈條底部的色調(diào)(顏色)

當(dāng) LED 燈帶包含多個(gè) Hue 時(shí),顏色順序始終遵循色譜的順序:紅色、橙色、黃色、綠色、藍(lán)色、紫色。

要為整個(gè) LED 燈條選擇一個(gè)色調(diào),只需將頂部色調(diào)和底部色調(diào)電位器放在相同的位置。

5. Spread - 控制色相沿 LED 燈條的分布范圍,從集中在中間到“聚集”在兩端。

我使用色相、飽和度和值 (HSV) 顏色模型來控制 LED,而不是 RGB 參數(shù),因?yàn)?HSV 直接產(chǎn)生我想要的效果。本文解釋并比較了 HSV 和 RGB 顏色模型。幸運(yùn)的是,代碼中使用的 Adafruit Neopixel 庫同時(shí)支持 RGB 和 HSV。

當(dāng)模式開關(guān)處于右側(cè)位置時(shí),F(xiàn)FT 模式被激活。在這種模式下,電位器被禁用。

FFT(快速傅立葉變換)模式接受來自音樂播放器耳機(jī)連接的輸入。使用 FFT,它計(jì)算每個(gè)頻帶的 HSV 設(shè)置的值(亮度)部分。然后它將這個(gè)值參數(shù)與用戶選擇的顏色組合起來,并將它們發(fā)送到適當(dāng)?shù)?LED。本文對傅里葉變換進(jìn)行了簡單易懂的解釋。實(shí)際的計(jì)算超出了我的想象,但慷慨的 Arduino 社區(qū)再次以 ArduinoFFT 庫的形式提供了救援。

電路

電路原理

poYBAGNkWfqADy-ZAAFMRYhHfSY975.png
?

在此圖中,標(biāo)記為 Arduino Nano (Rev3.0) 的設(shè)備實(shí)際上是一個(gè) Arduino Nano Every。

標(biāo)有電壓調(diào)節(jié)器 5V 的設(shè)備實(shí)際上是一個(gè) 5V 降壓轉(zhuǎn)換器。9VDC 墻上適配器通過其 Vin 引腳為 Nano 供電,并為降壓轉(zhuǎn)換器供電。降壓轉(zhuǎn)換器的作用是為 LED 燈條提供 5V 電源Nano 通過引腳 D3 與 LED 燈條通信。

我使用了這個(gè)項(xiàng)目中詳述的音頻輸入電路(在圖的左上角):

該電路使用 Nano 的 REF 和 3.3V 引腳,并饋入 A0 模擬輸入。

五個(gè)電位器用于設(shè)置 LED 燈條的顏色和顏色范圍。代碼部分描述了這五種設(shè)置。它們由 Nano 的模擬輸入 A1 到 A5 讀取。

模式開關(guān)用于選擇顏色設(shè)置或 FFT 模式。開關(guān)位置在 Nano 的 D2 引腳上讀取。

Fritzing 文件可在下面的原理圖部分下載。

面包板組裝

pYYBAGNkWf2AX8fuAAPS5IThiEo586.png
?

我為那些想像我一樣探索和修改電路的人提供了這張圖。面包板也是測試代碼和所有組件的最不令人沮喪的方式。Fritzing 文件可在下面的原理圖部分下載。

同樣,看起來像穩(wěn)壓器的設(shè)備實(shí)際上是一個(gè) 5V 降壓轉(zhuǎn)換器。表示為 Arduino Nano(Rev3.0)的控制器實(shí)際上是 Arduino Nano Every。所有紅線承載 5V,橙色線承載 9V,黑線接地。

原型板和盒子組裝

pYYBAGNkWgCAHD4MAAINgLuYxPk646.png
?

該圖可在下面的“原理圖”部分下載。圖示的板比我使用的板大,但它讓我能夠更清楚地說明布局。

poYBAGNkWgWAe5dCAAupJj4bh8Y610.jpg
?

通過豎起電阻器并將穿孔中的一些連接加倍,我能夠?qū)⒔M件擠壓到 7cm x 3cm 板上。它非常適合我選擇的外殼,有足夠的空間可供使用。

Nano 的位置使其 USB 連接器略微懸垂在電路板邊緣。我在外殼上切了一個(gè)檢修孔,我可以通過它連接 USB 電纜。這讓我可以在不移除 Nano 的情況下重新編程。

我最初使用橡膠粘合劑將 Nano 直接放置在板上,直到焊點(diǎn)將其固定到位。

我決定在電路板和面板安裝組件之間安裝 JST 連接器。對于原型而言,這似乎過于熱心,但有時(shí)間,我只是想熟悉這些連接器。我也懷疑我最終會想要重新安排一些事情。

pYYBAGNkWgyAK3ypAAwhiUwTF0E132.jpg
?

我在“定制零件和外殼”部分包含了我的施工圖。這些可以節(jié)省您測量、定位和安裝組件的時(shí)間。您還可以使用它們打印控件的符號。

poYBAGNkWhGAEzO-AAfPgEemQb8054.jpg
?

這張照片顯示了 LED 柱組件的底座。該項(xiàng)目要求 LED 燈條包含 29 個(gè) LED。LED燈條的背面是自粘的,所以我把它粘在一塊1/2”x1/8”的鋁條上。我想擴(kuò)散 LED 的光,我想到了氯丁橡膠管。它通常具有半透明的白色。我發(fā)現(xiàn)這種內(nèi)徑為 12 毫米的管子非常適合燈條和 LED 燈條。光線尚未擴(kuò)散到我喜歡的程度,我將嘗試使用其他材料。我的大女兒,一位藝術(shù)家,建議使用聚酯薄膜。

編碼

我?guī)缀踉诿恳恍写a中都添加了注釋,以便在我學(xué)到的時(shí)候向自己解釋。所以在這里,我將更籠統(tǒng)地描述它。

與 LED 燈條通信

該代碼使用 Adafruit NeoPixel 庫與 LED 燈條進(jìn)行通信。以下是圖書館圖書館用戶指南的鏈接。

主循環(huán)的結(jié)構(gòu)

主循環(huán)分為兩個(gè)循環(huán);顏色設(shè)置循環(huán)和 FFT 循環(huán)。模式開關(guān)的位置決定了哪個(gè)循環(huán)處于活動(dòng)狀態(tài)。循環(huán)由讀取開關(guān)位置的“while”語句控制。

void loop() 
while (digitalRead(modeSwitchPin)==LOW){
//Colour Setting code goes here because the mode switch is in the LOW (Colour Set) position.
}
//FFT code goes here because the mode switch is in the HIGH (FFT) position, outside “while” loop.
//If the mode switch is moved to LOW (Colour Set), reset Nano to re-initialize variables and memory.
if (digitalRead(modeSwitchPin)==LOW){
resetFunc();
}
}

當(dāng)模式開關(guān)處于顏色設(shè)置位置 (LOW) 時(shí),顏色設(shè)置代碼將保持循環(huán)。

只要將模式開關(guān)撥到 FFT 位置 (HIGH),“while”循環(huán)就會中斷,F(xiàn)FT 代碼就會開始循環(huán)。

當(dāng)模式開關(guān)再次輕彈到顏色設(shè)置位置時(shí),軟復(fù)位功能被激活,重新初始化 Nano 并允許顏色設(shè)置代碼再次開始循環(huán)。

我包含了軟重置功能,因?yàn)轭伾O(shè)置代碼在 FFT 代碼運(yùn)行后拒絕運(yùn)行。我不知道為什么會發(fā)生這種情況,但是軟重置有效。

發(fā)送到 LED 燈條的所有指令都采用 RGB 標(biāo)準(zhǔn)的格式 strip.setPixelColor()。但是,我選擇使用 HSV 參數(shù)設(shè)置顏色,然后將它們轉(zhuǎn)換為 RGB。

顏色設(shè)置模式:傳播調(diào)整

這個(gè)特性需要一些解釋。我添加了這個(gè)調(diào)整,因?yàn)槲蚁敫淖冄?LED 燈帶的色調(diào)分布,從集中在中間到“聚集”在兩端。我將 sigmoid 曲線(也稱為 s 曲線)公式應(yīng)用于色調(diào)范圍。

k=analogRead(kPin); //read k pot, 0-1023

該行讀取Spread 電位器的位置。

hueSig[i] = hueMax/(1+(pow(2.718,(0-(k/4000000))*(hue-(hueMax/2))))); //apply s-curve

在這條線中,Spread 電位器 (k) 的值用于調(diào)整 S 形曲線的斜率,從而改變每個(gè) LED 的色調(diào)。然后每個(gè) LED 的色調(diào)變?yōu)?hueSig[i]。順便說一句,我通過實(shí)驗(yàn)得出了 4000000 的值。

本文解釋了 sigmoid 曲線。我在文章的開頭使用了基本方程。

FFT 模式

我當(dāng)然沒有在這里發(fā)明任何東西。感謝 Chris Parker 分享他的設(shè)計(jì)代碼。我還借鑒了Arduino FFT 庫文檔中的示例。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)