Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul consta in redarea unei melodii si sincronizarea jocului de lumini pe o matrice de leduri (4×4) in functie de frecventele redate.
Am pornit de la ideea unui vumetru, insa am simplificat aprinderea LED-urilor pentru o singura valoare a unei frecvente la un moment dat.
Schema bloc
Butonul de Start porneste difuzorul si aprinderea LED-urilor. Pentru a le opri se apasa butonul de Reset de pe placuta de baza, dupa care la apasarea butonului de Start se poate reporni redarea sunetului si a jocului de lumini.
LED-urile se aprind succesiv, in functie de frecventa sunetului redat pe difuzor.
Componente folosite:
Schema bloc generala
PortC (primele 2 coloane de LED-uri)
Componente:
* 8 LED-uri (3mm) * 8 rezistente (6 x 270 ohmi, 2 x 330 ohmi)
PortA (celelalte 2 coloane de LED-uri)
Componente:
* 8 LED-uri (3mm) * 8 rezistente (4 x 270 ohmi, 4 x 330 ohmi)
Buton
Logica Programului
Programul are in memorie un vector de frecvente de 6000 de elemente, obtinut prin conversia unui fisier de tip .WAV cu ajutorul unui executabil wav2c.
O data ce este apasat butonul de start se incepe parcurgerea vectorului astfel: o data la 4 elemente se determina frecventa care trebuie redata. In functie de aceasta se va seta jocul de lumini. LED-urile sunt aprinse la un interval de 80 ms, simultan cele selectate de pe PORTA si PORTC (nu se aprind mai intai cele de pe un port si apoi cele de pe celalalt).
De asemenea fiecare nota (frecventa) este redata doar 160 ms, dupa care este citita urmatoarea, intercalata intre secventa de aprindere a LED-urilor; astfel dureaza 640 ms aprinderea LED-urilor pentru prima frecventa din seria de 4 interpretate.
Difuzorul este legat la un pin PWM al microcontroller-ului si functioneaza in intreruperi.
In momentul in care este apasat butonul de Reset, executia programului se opreste.
Alte detalii
Software-ul a fost scris in Programmer's Notepad si compilat cu WinAVR.
Schemele electrice au fost realizate in Eagle.
Pornisem cu ideea de a realiza transmisia de date intre PC si microcontroller utilizand conexiunea USB prin care incarcam si programul, insa nu am reusit acest lucru, de aceea am ramas la varianta memorarii unei secvente de frecvente in memoria programului.
Surse si functii:
Am reusit sa redau o secventa de sunete si sa sincronizez aprinderea LED-urilor; calitatea sunetului nu este foarte buna, avand in vedere ca imi stabilesc propriile intervale de timp, iar redarea sunetului se face pe un singur canal, insa in mare scopul a fost atins.
Placuta finala - dupa apasarea butonului de Start
Placuta finala - in starea de asteptare
A fost interesant sa realizez acest proiect singura, fiind primul de acest gen pe care l-am finalizat. Partea buna a fost ca a mers totul din prima, nu am avut probleme cu componentele, lipiturile sau rularea codului.
De asemenea exista posibilitatea generarii de melodii pe baza unei partituri si a duratelor, modificand vectorul de frecvente, deci pot sa setez placuta sa cante ce doresc .