Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul consta in construirea unui sintetizator muzical care simuleaza structura unei claviaturi.
Interactiunea cu utilizatorul este realizata prin intermediul butoanelor. Acesta primeste un feedback direct la apasarea butonului prin redarea automat a unui anumit sunet asociat butonului. Claviatura este alcatuita dintr-o singura octava (8 butoane) ce redau sunetul folosind un difuzor.
Exista 3 functionalitati de baza: 1. Interpretarea unei melodii (gama C major) 2. Inregistrarea unei melodii 3. Redarea ultimei melodii inregistrate.
Modul curent de functionare poate fi modificat de utilizator cu ajutorul panoului de control, alcatuit din 3 butoane de selectare e functionalitatii curente si 2 leduri pentru a indica starea curenta a dispozitivului.
Schema bloc:
Lista de piese:
Schema electrica:
Logica programului
La fiecare 10ms (aces interval este setat cu ajutorul timerului 2), logica de control parcurge urmatorii pași în funcție de modul curent de funcționare al programului:
DEFAULT
Vefică butoanele apăsate (claviatura) și alcatuiește o mască de biți apăsati. Acestă mască este comparată cu masca de la pasul anterior, biții care nu au fost apăsați în pasul anterior sunt ignorați (se evită astfel fenomenul de bouncing). Dintre butoanele apăsate în ambii pași (pasul curent și anterior) se alege o singura notă pentru redare, și anume nota cea mai inaltă (astfel se tratează cazul apăsării simultane pe mai multe butoane). În cazul în care nu a fost apăsat nici un buton de claviatură se oprește ieșirea PWM.
REC
Prin setarea modului REC, notele alese după algoritmul prezentat la modul anterior sunt salvate intr-un array de note. Fiecare nota are o durata și o frecventă. În cazul in care nota curentă are aceeasi frecventa cu nota anterioară se prelungește durata notei anterioare, altfel se introduce o noua nota în array. În cazul în care nu a fost apăsat nici un buton de claviatură, se introduce în sir (sau se prelungește) o “nota mută”. Nota mută nu are o frecvența validă, ea doar închide canalul PWM.
PLAY
Se redau notele salvate în array în odinea în care au fost stocate. În cazul în care se gaseste o “nota mută” se închide ieșirea PWM. În acest mod nu sunt luate în considerare apăsările butoanelor de claviatură.
Desi la inceput am fost destul de reticent fata de acest proiect, la final reward-ul a fost mai mare decat la orice tema/proiect facut pana acum in facultate.
Mi-a dat destule batai de cap si mi-a lasat cateva arsuri pe maini, insa a meritat.