This shows you the differences between two versions of the page.
pm:prj2023:apredescu:vumeter [2023/05/29 23:37] andreea.state2603 [Rezultate Obţinute] |
pm:prj2023:apredescu:vumeter [2023/05/30 10:44] (current) andreea.state2603 [Download] |
||
---|---|---|---|
Line 48: | Line 48: | ||
* void displayLcdMode() - afișez pe LCD textul cu numele modului curent de afișsare al led-urilor | * void displayLcdMode() - afișez pe LCD textul cu numele modului curent de afișsare al led-urilor | ||
* void displayHearts(int noHearts) - afișez pe LCD inimioarele care reprezintă o scară a intensității sunetului | * void displayHearts(int noHearts) - afișez pe LCD inimioarele care reprezintă o scară a intensității sunetului | ||
- | * displayLedsAndHearts0-3() - trece prin vectorul de led-uri și setează culoarea led-urilor și apelează funcția de afișsare a inimioarelor de pe ecranul LCD | + | * struct my_leds colorWheel(int s) - în această funcție setez câte led-uri trebuie aprinse, culoarea acestora și numărul de inimioare afișate pe LCD (folosesc această funcție doar pentru modul 0 si modul 1) |
+ | * displayLedsAndHearts2(), displayLedsAndHearts3() - pentru modul 2 sau 3 trece prin vectorul de led-uri și setează culoarea led-urilor și apelează funcția de afișsare a inimioarelor de pe ecranul LCD | ||
* upDown(int s), downUp(int s), intExt(int s), extInt(int s) - în funcție de valoarea citită de la senzorul de sunet stabilește intervalul de led-uri care trebuie aprinse si apelează funcția de displayLedsAndHearts() corespunzătoare modului de afișare | * upDown(int s), downUp(int s), intExt(int s), extInt(int s) - în funcție de valoarea citită de la senzorul de sunet stabilește intervalul de led-uri care trebuie aprinse si apelează funcția de displayLedsAndHearts() corespunzătoare modului de afișare | ||
* void loop() - citesc inputul de la senzorul de sunet, verific dacă este nevoie să modific textul de pe ecranul LCD (dacă a fost apăsat butonul sau dacă au trecut 10 secunde de când nu a mai fost apăsat butonul) și verific care este modul curent de afișare al led-urilor și apelez funcția corespunzătoare | * void loop() - citesc inputul de la senzorul de sunet, verific dacă este nevoie să modific textul de pe ecranul LCD (dacă a fost apăsat butonul sau dacă au trecut 10 secunde de când nu a mai fost apăsat butonul) și verific care este modul curent de afișare al led-urilor și apelez funcția corespunzătoare | ||
+ | În structura my_leds păstrez câte led-uri trebuie aprinse, culoarea lor și numărul de inimi. | ||
Banda led are 4 moduri de afișare care se schimbă fie la o apăsare de buton, fie dupa 10 secunde în care nu a fost detectată nicio apăsare de buton. | Banda led are 4 moduri de afișare care se schimbă fie la o apăsare de buton, fie dupa 10 secunde în care nu a fost detectată nicio apăsare de buton. | ||
Line 62: | Line 63: | ||
De asemenea, în cazul în care este detectată o apăsare de buton timerul este resetat pentru a evita situația în care unul dintre modurile de afișare ar fi durat mai puțin de 10 secunde. | De asemenea, în cazul în care este detectată o apăsare de buton timerul este resetat pentru a evita situația în care unul dintre modurile de afișare ar fi durat mai puțin de 10 secunde. | ||
+ | Inițial am vrut să folosesc funcția de map de la arduino pentru a decide câte led-uri să se afișeze, dar efectul vizual rezultat nu era unul așa de frumos, întrucât numărul de led-uri aprinse se schimba brusc. Așa că am decis să verific eu de de mână pentru fiecare mod de aprindere câte led-uri să se aprindă în funcție de valoara primită de la senzorul de sunet. După multe testări cu diverse inputuri și după ajustarea senzitivității senzorului, am găsit combinațiile de input și număr de led-uri aprinse astfel încât să obțin un efect vizual gradual. Faptul ca eu decid pentru fiecare mod în parte ce beculețe să se aprindă m-a ajutat să obțin efectul vizual dorit, dar a rezultat în destul de mult cod de scris. | ||
Line 85: | Line 87: | ||
<note> | <note> | ||
- | Arhiva ce conține codul sursă al proiectului: {{:pm:prj2023:apredescu:state_rebecca_soundreactivevumeter.zip|}} | + | Arhiva ce conține codul sursă al proiectului: {{:pm:prj2023:apredescu:soundreactivemeter.zip|}} |
</note> | </note> | ||