Autor: Leoveanu Maria-Alexandra
Grupa: 333CA
Componente folosite:
Intreaga implementare se afla in fisierul FlashLEDS.ino
In bucla principala se verifica de fiecare data care e modul in care ar trebui sa lumineze banda. Apoi, daca modulul de bluetooth a primit date prin intermediul telefonului pentru a schimba modul, acesta se actualizeaza, si la urmatoarea bucla banda va lumina diferit.
Mesajele “intelese” de placuta sunt:
Deoarece semnalul primit de la laptop are forma sinusoidala, am ales sa reprezint in jocul de lumini doar punctul maxim local al fiecarei unde. Pentru asta, am ales (arbitrar, in functie de valorile pe care am vazut ca le are semnalul) o valoare de “prag” sub care sa nu mai modific ledul. Astfel, pentru valorile mai mici la care semnalul coboara, ledul nu va clipi de fiecare data, ci va ramane cu ce culoare avea inainte. In functie de intensitatea semnalului, ledul va avea una din cele 3 culoari, corespondente anumitor range-uri de valori intre care am observat ca se afla in general.
In bucla, daca primul caracter primit este 2, se verifica si urmatorul, pentru a seta culoarea statica cu care se va aprinde banda. Apoi, in functia static_colour(colour)
se seteaza toate ledurile benzii la acea culoare.
In cazul acestui mod am ales (din nou, arbitrar) 5 nivele diferite pana la care se poate aprinde ledul. Cu cat intensitatea sunetului e mai mare, cu atat se aprind mai multe leduri. In plus, ultimul led se aprinde rosu, iar penultimele 2 se aprind portocaliu (restul se aprind verde). In functia v_meter
, dupa ce stabilesc care e acel nivel, banda se lumineaza led cu led pana la maxim, si apoi, tot led cu led, se stinge pana la nivelul minim (0).
Banda cicleaza prin toate culorile curcubeului. Implementarea + obtinerea culorilor in ordinea curcubelui am facut-o cu ajutorul acestui snippet. Functia rainbow()
reprezinta un ciclu complet de culori. Deci daca modul de luminare se schimba in mijlocul acesuia, ciclul de culori trebuie sa se termine inainte de a se schimba ⇒ va exista un delay pana cand modul de luminare se schimba.
Ledurile isi schimba gradual culoarea de la o culoare 1 la o culoare 2. Valorile A/B/C reprezinta combinatiile de culori posibile intre care se poate face fade. In functia fade()
, in 2 bucle separate, se face o data tranzitia de la culoarea 1 la culoarea 2, apoi de la culoarea 2 la culoarea 1. La fel ca in cazul modului de 4, schimbarea din modul 5 in altul va avea un scurt delay deoarece trebuie sa se tremine un ciclu de fade complet.
25.04.2021 - Adaugare pagina proiect ocw
9.05.2021 - Modificare (mica) a implementarii: In loc de microfon voi folosi o placa audio externa pentru a reda sunetul ce iese din laptop in placuta. Astfel, transmit in placuta exact semnalul audio redat de laptop; microfonul nu capta sunetele din fundal, ci doar cele foarte apropiate de el, si rezultatul nu a fost cel asteptat.
16.05.2021 - Finalizare implementare proiect software + hardware
20.05.2021 - Adaugare schema electrica ocw
01.06.2021 - Adaugare explicatii software ocw