This is an old revision of the document!
Audio Spectrum Visualizer
Autor: Vlad-Alexandru Proteasa
Introducere
Proiectul consta in realizarea unui dispozitiv care va prelua inputul audio si va genera un output vizual pe mai multe benzi led. Numarul de leduri si culoarea de pe fiecare banda va depinde de frecventele prezente in semnalul audio receptionat.
Descriere generala
Pentru a preluat inputul audio poate sa fie folosit un microfon care preia semnalul sonor din camera sau un cablu jack conectat la un dispozitiv care poate transmite datele necesare.
Semnalul este preluat de circuitul integrat MSGEQ7 si transmite datele prelucrate catre placuta Arduino UNO, atunci cand este semnalizat sa faca acest lucru.
La placuta sunt conectate sapte benzi led, fiecare cu cate opt led-uri rgb. Fiecare banda corespunde unei anumite frecvente din semnalul audio prelucrat. Numarul de leduri de pe fiecare banda care o sa se aprinda si culoare lor depinde de valoare returnata de circuit.
Utilizatorul are la dispozitie mai multe butoane prin care poate configura output-ul vizual:
modifica culoare ledurilor
sensibilitatea (cat de usor se aprind toate ledurile de pe banda)
gama de culori folosita
revenirea la setarile initiale
Hardware Design
Lista componente
Arduino UNO
MSGEQ7
Modul microfon
Jack input (CJMCU-TRRS)
7 Benzi NeoPixel
Rezistori: 1KΩ (6), 10KΩ (6), 56KΩ (3)
Condensatori: 33pF (1), 0.1uF (3)
Breadboard
Fire jumper
Cablu audio jack 3.5mm
Schema Electrica
Software Design
Codul sursa esti disponibil aici: GitHub
Dependinte
Singura dependinta este biblioteca Adafruit_NeoPixel folosita pentru a controla benzile led adresabile folosite in implementarea hardware a proiectului.
Setup initial
Seteaza pinii de output pentru leduri si initializeaza vectorul folosit pentru a controla culoriile si luminozitatea benzilor led.
Sunt initializate variabilele pentru a controla setarile dispozitivului.
Se activeaza intreruperea pentru unul dintre butoane, celelalte raman doar pentru input. Input-ul este interpretat mai tarziu in funtia apelata atunci cand se genereaza intreruperea
Intreruperi
Am configurat o intrerupere pentru butonul din marginea din stanga. Utilizatorul poate sa tina apasate oricare din celelalte patru butoane. Atunci cand butonul asociat intreruperii este apasat input-ul este citit si interpretat. Functia actioneaza asemanator cu un switch case. In functie de combinatia de butoane apasata setarile dispozitivului vor fi modificate asa cum este descris in diagrama de pe acest link.
Rezultate Obtinute
In urmatoarele doua poze este prezentata implementarea hardware:
Breadboard-ul pe care se afla butoanele pentru setari, mufa jack pentru conectarea cu o sursa de la care se preia inputul audio si circuitul MSGEQ7:
Inregistrari video in care este demonstrata functionalitatea:
-
Ajustare setari
-
Bibliografie/Resurse