Sisukord:
Video: CRAZY L.O.L SPECTRUM ANALYZER: 6 sammu (koos piltidega)
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Täna tahaksin jagada, kuidas teha helispektri analüsaator - 36 riba, kombineerides 4 LoL Shieldsi. See hull projekt kasutab FFT raamatukogu, et analüüsida stereo helisignaali, teisendada see sagedusribadeks ja kuvada nende sagedusalade amplituud 4 x LoL Shieldsil.
Enne alustamist vaadake palun allolevat videot:
1. samm: ASJAD, MIDA VAJAME
Peamised elektroonilised komponendid on järgmised:
- 4 tk x Arduino Uno R3.
- 4 tk x LoLShield PCB. PCBWay (täisfunktsionaalne kohandatud PCB prototüüpide teenus) toetas mind neid LoLShieldi trükkplaate.
- 504tk x LED, 3mm. Iga LoLShield vajab 126 LED-i ja saame valida 4 erinevat LED-värvi ja tüüpi (hajutatud või hajutamata).
- 1 tk x kaasaskantav laadija toitepanga aku 10000/20000mAh.
- 4tk x isane päis 40pin 2,54mm.
- 2 tk x A/B tüüpi USB -kaabel. Ühte kasutatakse Arduino programmeerimiseks, teist aga Arduino toiteks toitepangast.
- 1 tk x 3,5 mm naissoost stereohelipistik.
- 1 tk x 3,5 mm
- 1 tk x 3,5 mm stereoheli pesa mees-mees pistikupesa.
- 1 m x 8P vikerkaarekaabel.
- 1 m x kahe südamikuga toitekaabel.
- 1 tk x läbipaistev akrüül, suurus A4.
2. etapp: KEEMILINE
LoLShield on 9x14 charlieplexing LED -maatriks Arduino jaoks ja see disain EI sisalda ühtegi voolu piiravat takistit. LEDid on individuaalselt adresseeritavad, nii et saame neid kasutada teabe kuvamiseks 9 × 14 led -maatriksis.
LoL Shield jätab D0 (Rx), D1 (Tx) ja analoogpoldid A0 kuni A5 muude rakenduste jaoks vabaks. Alloleval pildil on näidatud Arduino Uno tihvtide kasutamine selle projekti jaoks:
Minu helispektri analüsaatoril on 4 x (Arduino Uno + LoLShield). Toiteallikas ja stereohelipistik 3,5 mm on ühendatud skemaatiliselt:
3. samm: LOL SHIELD PCB & LED SOLDINGING
1. LoL SHIELD PCB
Ѽ. PCB disainile saate viidata aadressil: https://github.com/jprodgers/LoLshield, autor Jimmie P. Rodgers.
Ѽ. PCBWay toetas mind neid LoLShieldi trükkplaate, millel on kiire kohaletoimetamine ja kvaliteetne PCB.
2. LED -JUOTMINE
Ѽ. Iga LoLShield vajab 126 LED -i ja 4x LoLShieldi jaoks kasutasin erinevat tüüpi ja värve järgmiselt:
- 1 x LoLShield: hajutatud led, punane värv, 3 mm.
- 1 x LoLShield: hajutatud led, roheline värv, 3 mm.
- 2 x LoLShield: hajutamata (selge) LED, sinine värv, 3 mm.
Ѽ. LoLShield PCB ja LED -i ettevalmistamine
Ѽ. 126 LED jootmine LoLShieldi trükkplaadile. Peaksime pärast iga rea jootmist kontrollima valgusdioode aku järgi - 14 LED -i
TOP LoLSHIELD
PÕHI LoLSHIELD
Ѽ. Lõpetage üks LoLShield ja jätkake 3 ülejäänud LoLShieldi jootmist.
4. samm: ÜHENDAMINE JA KOKKUVÕTMINE
Ѽ. Toiteallika ja helisignaali jootmine 4xLoLShieldi. Stereosignaal kasutab kahte helikanalit: vasakut ja paremat, mis on ühendatud Arduino Unoga analoogpistikutega A4 ja A5.
- A4: vasakpoolne helikanal.
- A5: parem helikanal.
Ѽ. Joondamine ja paigaldamine 4 x Arduino Uno akrüülplaadile.
Ѽ. 4 x LoLShieldi ühendamine 4 x Arduino Unoga.
Ѽ. Liimige akrüülplaadile kaasaskantav laadija toitepank ja helipistik
Ѽ. Valmis!
5. samm: PROGRAMMIMINE
Peaksite viitama sellele, kuidas LoLShield Charlieplexingi meetodi ja kiire Fourier -teisenduse (FFT) alusel töötab:
en.wikipedia.org/wiki/Charlieplexing
github.com/kosme/fix_fft
Charlieplexingu puhul pöörame tähelepanu Arduino digitaalsete tihvtide "kolmele olekule": "HIGH" (5V), "LOW" (0V) ja "INPUT". Režiim "INPUT" paneb Arduino tihvti kõrge takistusega olekusse. Viide aadressil:
www.arduino.cc/en/Tutorial/DigitalPins
Minu projektis kuvatakse heli sagedusribad 4 x LoL Shieldil ja neid kirjeldatakse järgmiselt:
Iga Arduino loeb helisignaali vasakult/ paremalt kanalilt ja sooritab FFT.
jaoks (i = 0; i <64; i ++) {Audio_Input = analogRead (RIGHT_CHANNEL); // Helisignaali lugemine paremal kanalil A5 - ARDUINO 1 & 2 // Audio_Input = analogRead (LEFT_CHANNEL); // Helisignaali lugemine vasakul kanalil A4 - ARDUINO 3 & 4 Real_Number = Audio_Input; Kujuteldav_arv = 0; } fix_fft (tegelik_arv, kujuteldav_arv, 6, 0); // Teostage kiire Fourier 'teisendus N_WAVE = 6 (2^6 = 64) korral (i = 0; i <32; i ++) {Real_Number = 2 * sqrt (Real_Number * Real_Number +Imaginary_Number * Kujuteldav_arv ); }
Ѽ. Arduino 1 - kuvab parema kanali (A5) amplituudi sagedusribasid 01–09.
for (int x = 0; x <14; x ++) {for (int y = 0; y <9; y ++) {if (x <Real_Number [y]) // Kuva sagedusribad 01 kuni 09 {LedSign:: Set (13-x, 8-y, 1); // LED SISSE} else {LedSign:: Set (13-x, 8-y, 0); // LED VÄLJAS}}}
Ѽ. Arduino 2 - kuvab parempoolse kanali (A5) amplituudi sagedusribasid 10 ~ 18.
for (int x = 0; x <14; x ++) {for (int y = 0; y <9; y ++) {if (x <Real_Number [9+y]) // Kuva sagedusribad 10 kuni 18 {LedSign:: Komplekt (13-x, 8-y, 1); // LED SISSE} else {LedSign:: Set (13-x, 8-y, 0); // LED VÄLJAS}}}
Ѽ. Arduino 3 - kuvage vasakpoolse kanali (A4) amplituudsagedusi 01–09.
Kood on sama nagu Arduino 1 ja helisignaali vasak kanal ühendatakse Arduinoga analoogpistikul A4.
Ѽ. Arduino 4 - kuvage vasakpoolse kanali 10–18 amplituudi sagedusribasid.
Kood on sama mis Arduino 2 ja helisignaali vasak kanal ühendatakse Arduinoga analoogpistikul A4.
6. samm: VIIMISTLUS
See kaasaskantav spektrianalüsaator saab ühendada otse sülearvuti/ lauaarvuti, mobiiltelefoni, tahvelarvuti või muude muusikamängijatega 3,5 mm stereohelipistiku kaudu. See projekt tundub hull, loodan, et teile meeldib!
Täname lugemise eest !!!