Autorul poate fi contactat la adresa: Login pentru adresa
Scopul proiectului este de a crea un pian digital simplu care să poată reda notele muzicale din gama majoră C. Pe lângă această funcționalitate, vor exista și opțiuni pentru înregistrarea unei melodii, redarea ultimei melodii înregistrate, precum și selectarea și redarea unor melodii cu scopul de a le învăța.
Am ales să fac acest proiect deoarece oferă posibilitatea oricui de a-și testa talentul de pianist chiar dacă nu poate fi considerat un înlocuitor pentru un pian adevărat.
Modurile de funcționare ale pianului sunt următoarele:
Selecția modului de funcționare se va efectua cu ajutorul butoanelor de control: un buton pentru iterarea prin modurile de funcționare/melodii și un buton de selecție. Pe lângă acestea, vor exista 8 butoane corespunzătoare notelor din gama majoră C care vor reprezenta calviatura. Fiecare dintre aceste 8 butoane va avea asociat câte un LED ce va fi aprins în momentul redării notei corespunzătoare. Pe ecranul LCD-ului se vor afișa informații referitoare la modul de funcționare. Redarea notelor se va realiza cu ajutorul difuzorului.
Listă de piese:
Pe lângă placa de bază, proiectul va conține următoarele componente: butoane, LED-uri, speaker și LCD. În continuare sunt prezentate schemele electrice ale acestora.
Butoane
Vor exista două tipuri de butoane împărțite astfel: 3 butoane de control legate la pinii PC0 și PC1 de pe PORTC, respectiv pinul PD5 de pe PORTD și 8 butoane ce vor constitui claviatura, acestea fiind legate la pinii PB0-7 de pe PORTB.
LED-uri
Cele 8 LED-uri corespunzătoare notelor muzicale sunt conectate la pinii PA0-4, PD0-1 si PD7.
Speaker
Difuzorul este conectat la unul dintre pinii PWM ai microcontroller-ului (PD4) și legat la ground printr-un condensator.
LCD
Proiectul a fost dezvoltat pe Windows 10 folosind:
Am folosit biblioteca din laboratorul 1 pentru interfața cu ecranul LCD-ului, în care am modificat definițiile pentru pinii folosiți pentru conectarea ecranului.
Programul are 5 moduri de funcționare. Inițial, acesta se află în starea START din care se poate trece într-una dintre următoarele stări: SING, RECORDING, PLAYNG și LEARNING. La apăsarea unui buton de pe claviatură sau a unui buton de control se declanșează o întrerupere și se execută rutina de tratare a acesteia. La apăsarea unui buton de pe claviatură, dacă programul se află în modul SING sau RECORDING, pe lângă redarea notei asociate, se aprinde LED-ul corespunzător și se afișează pe a doua linie a ecranului nota curentă. Pentru reținerea melodiei înregistrate am utilizat un vector de structuri de tipul note. O structură de tipul note conține indexul notei și durata acesteia. Lungimea maximă a unei melodii înregistrate este de 256 de note. Redarea notelor se realizează cu ajutorul timer-ului 1 setat să funcționeze în modul CTC cu TOP la OCR1A și prescaler-ul la valoarea 1024. Speaker-ul este legat la pinul PD4 care este și ieșirea OCR1B a timer-ului 1. Prin modificarea lui OCR1A și OCR1B stabilesc frecvența notei redate.
Realizarea proiectului a fost o experiență interesantă și captivantă din care am învățat foarte multe lucruri. Partea hardware, deși nu este complicată, a ocupat mai mult timp decât mă așteptam (în special lipitul pieselor). Partea de software a fost relativ ușoară. În final, pot spune că am realizat tot ce mi-am propus, proiectul fiind complet funcțional.