Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul a pornit din placerea mea pentru a asculta muzica. Practic acest dispozitiv citeste banda de frecvente dintr-o melodie si o reda in functie de intensitate pe LCD.
Initial voiam sa iau inputul direct de la jack-ul din placa de sunet, apoi sa aplic FFT pe el si sa descompun in 16 benzi de frecventa pentru a face jocul de lumini, insa n-am reusit acest lucru, modificand proiectul pentru a citi ritmul deja descompus dintr-un fisier.
Nu stiu cat de util este pentru altii, dar pentru mine, ca pasionat pentru muzica, mi se pare un accesoriu foarte bun in analiza unei melodii, el putand sa creeze un efect foarte placut vizual.
La conectarea placutei la alimentare se va afisare un mesaj de Loading timp de aproximativ 2 secunde dupa care mesajul “Press button…” dupa care se asteapta apasarea unui buton pentru a incepe redarea pe LCD.
LCD-ul se aprinde pe toate cele 16 regiuni din functie de frecventa redata.
Am montat LCD-ul pe port C. Conform schemei. Alimentarea de la LCD (VCC - port 2) este conectata la microcontroler la AVCC(port 30), iar GND (port 1 - LCD) la AGND(port 31 - microcontroler).
Backlight-ul de la LCD (port A si K) le-am conectat la AVCC si AGND.
Portul de contrast l-am conectat prin potentiometru la AVCC si AGND pentru a regla intensitatea.
Componente electronice:
Implementare:
Am plecat de la biblioteca pentru LCD din laboratorul 1, la care am mai adaugat niste functii de afisare a caracterelor custom. Am salvat 8 caractere custom in CGRAM pentru a le folosi mai tarziu la crearea efectelor de la vu-meter.
Am salvat apoi intr-un vector de charuri o melodie descompusa in frecvente folosind utilitarul wav2c ce transforma o melodie din formatul .WAV in acel vector.
Functionalitate:
Citesc vectorul de charuri din fisier, il impart pe 16 benzi de frecventa si fiecare frecventa are 16 niveluri de intensitate. In functie de aceste date se completeaza un vector cu indicii caracterelor custom ce vor fi afisate pe ecran, apoi va fi parcurs acest vector pentru a-l scrie pe LCD.
La fiecare citire din vector dau un clear-screen pentru a relua procesul de la capat. Pentru a afisa melodia corect pun un delay de 100 de ms la fiecare afisare.
Mediu de dezvoltare, biblioteci, functii implementate:
Pentru programare am folosit Programmers Notepad, WinAVR pentru compilare si bootloaderul pus la dispozitie pentru laborator.
Fisiere:
Functii implementate:
Am reusit sa citesc fisierul de date si sa redau frecventele pe LCD.
Placuta finala:
Playing:
Afisajul:
Desi proiectul nu se foloseste de outputul de la placa de sunet (prin jack-ul de 3.5mm), sunt multumit ca l-am putut duce la capat citind frecventele din fisier.
Proiectul a fost interesant, nu foarte greu, dar implica multa rabdare si cautare pe internet.