This shows you the differences between two versions of the page.
pm:prj2023:gpatru:audiospectrum [2023/05/29 19:07] alexandru.ene2208 [Descriere generală] |
pm:prj2023:gpatru:audiospectrum [2023/05/29 19:09] (current) alexandru.ene2208 [Software Design] |
||
---|---|---|---|
Line 46: | Line 46: | ||
MAX7219 Matrice LED-uri 32x8: | MAX7219 Matrice LED-uri 32x8: | ||
- | * Pentru acest modul este disponibila o varietate larga de biblioteci | + | * Pentru acest modul este disponibila o varietate larga de biblioteci capabile sa ofere posibilitatea de a afisa diverse imagini pe acesta. |
- | capabile sa ofere posibilitatea de a afisa diverse imagini pe acesta. | + | * Pentru afisajul principal (Audio Spectrum Analyzer) am folosit biblioteca "MD_MAX72xx" care imi permite controlarea individuala a coloanelor, avand astfel posibilitatea de a seta fiecare coloana a matricei pe verticala in functie de frecventele captate de microfon. De asemenea pentru a avea un rezultat cat mai placut vizual am folosit "arduinoFFT" care preia semnalele si stabileste armonicele corespunzatoare. |
- | * Pentru afisajul principal (Audio Spectrum Analyzer) am folosit | + | * Pentru celelalte moduri de functionare am folosit "MD_Parola" care ofera functii mult mai potrivite si mai usor de folosit pentru jocuri de lumini decat biblioteca mentionata anterior, dar nu este de o flexibilitate foarte mare de aceea nu am folosit-o si la modul de la punctul anterior. |
- | biblioteca "MD_MAX72xx" care imi permite controlarea individuala a coloanelor, | + | * Pentru a nu seta manual fiecare led pe o coloana am folosit un vector pentru fiecare amplitudine posibila. |
- | avand astfel posibilitatea de a seta fiecare coloana a matricei pe verticala | + | |
- | in functie de frecventele captate de microfon. De asemenea pentru a avea un rezultat | + | |
- | cat mai placut vizual am folosit "arduinoFFT" care preia semnalele si stabileste | + | |
- | armonicele corespunzatoare. | + | |
- | * Pentru celelalte moduri de functionare am folosit "MD_Parola" care ofera | + | |
- | functii mult mai potrivite si mai usor de folosit pentru jocuri de lumini decat | + | |
- | biblioteca mentionata anterior, dar nu este de o flexibilitate foarte mare de aceea | + | |
- | nu am folosit-o si la modul de la punctul anterior. | + | |
- | * Pentru a nu seta manual fiecare led pe o coloana am folosit un vector pentru | + | |
- | fiecare amplitudine posibila. | + | |
Luminozitate reglata automat: | Luminozitate reglata automat: | ||
- | * Pentru acest feature m-am bazat pe conceptul de ADC invatat la laborator, | + | * Pentru acest feature m-am bazat pe conceptul de ADC invatat la laborator, folosind un fotorezistor asupra caruia am aplicat un factor de "smoothing". |
- | folosind un fotorezistor asupra caruia am aplicat un factor de "smoothing". | + | |
Schimbare moduri afisare: | Schimbare moduri afisare: | ||
- | * Am folosind o simpla intrerupere cuplata la PIN-ul 2 de pe Arduino pe care | + | * Am folosind o simpla intrerupere cuplata la PIN-ul 2 de pe Arduino pe care am facut un debouncer in software. |
- | am facut un debouncer in software. | + | |
Moduri secundare de afisare: | Moduri secundare de afisare: | ||
- | * Pentru modurile care nu implica "VU Metrul" am preluat datele de la senzori prin | + | * Pentru modurile care nu implica "VU Metrul" am preluat datele de la senzori prin bibliotecile corespondente (ex. sezonr tmeperatura -> "DHT"), iar pentru jocurile de lumini am folosit conceptul de "SpriteData" dat in MD_Parola. |
- | bibliotecile corespondente (ex. sezonr tmeperatura -> "DHT"), iar pentru jocurile de lumini | + | |
- | am folosit conceptul de "SpriteData" dat in MD_Parola. | + | |
* La afisare modelul l-am pastrat simplu cu PA_CENTER pentru a avea totul centrat pe matrice. | * La afisare modelul l-am pastrat simplu cu PA_CENTER pentru a avea totul centrat pe matrice. | ||
Optimizari: | Optimizari: | ||
- | * Avand un numar destul de mare de biblioteci si o memorie limitata pe arduino acest lucru a | + | * Avand un numar destul de mare de biblioteci si o memorie limitata pe arduino acest lucru a fost o problema din start. |
- | fost o problema din start. | + | * Jocurile de lumini se bazeaza pe matrici care seteaza starea ledurilor, matrici care pot ocupa destula memorie de aceea am folosit keyword-ul "PROGMEM" care indruma compilatorul sa puna aceste date pe memoria flash, nu pe SRAM unde ar fii fost puse. |
- | * Jocurile de lumini se bazeaza pe matrici care seteaza starea ledurilor, matrici care pot ocupa | + | * Mi-as fi dorit sa pot renunta la una din bibliotecile pentru MAX7219 deorece ocupa destula memorie, dar MD_Parola este dependenta de MD_MAX72xx ceea mi-a ingreuna procesul de implementare. |
- | destula memorie de aceea am folosit keyword-ul "PROGMEM" care indruma compilatorul sa puna aceste | + | |
- | date pe memoria flash, nu pe SRAM unde ar fii fost puse. | + | |
- | * Mi-as fi dorit sa pot renunta la una din bibliotecile pentru MAX7219 deorece ocupa destula memorie, | + | |
- | dar MD_Parola este dependenta de MD_MAX72xx ceea mi-a ingreuna procesul de implementare. | + | |
* Memoria utilizata in momentul actual este de 86%. | * Memoria utilizata in momentul actual este de 86%. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== |