Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul consta in implementarea unei versiuni simple a jocului Piano Tiles. Jocul va rula pe o matrice de 8×8 led-uri, se va controla de pe 4 butoane si va reda sunete de pe un card SD prin intermediul unui buzzer.
Pe matricea de led-uri vor fi aprinse blocuri de led-uri de dimensiune 2*2 pe cate 4 linii. Jucatorul va trebui sa apese butonul corespunzator blocului aprins si in acel moment buzerul va reda de pe cardul SD o secunda dintr-o melodie. Scopul jocului este de a reda melodia in intregime. La o apasare gresita de buton jocul se termina.
Pentru implementarea software am folosit Programmer's Notepad, avr-gcc ca si compilator. Pentru interfatarea cu matricea de LED-uri MAX7219 am folosit o biblioteca disponibila online scrisa de Davide Gironi. Aceasta ofera functii pentru a controla proprietatile LED-urilor(stare aprins-stins, intensitate).
Pentru a reda sunete pe modulul cu buzzer activ am construit un vector cu toate frecventele notelor pe care le emite un pian. Cu ajutorul acestor note si al partiturilor disponibile online am implementat redarea catorva melodii cunoscute(Old Mac Donald had a farm, Happy Birthday to you, Twinkle Twinkle Little Star).
Programarea algoritmului de functionare a jocului a mai constat in generarea de blocuri de 4×4 LED-uri random pe fiecare linie a matricii care sa coboare la un interval de timp si programarea rutinelor de tratare a intreruperilor generate de apasarea unui buton. La apasare se verifica daca alegerea a fost corecta, se emite un sunet corespunzator si jocul continua; altfel jocul se termina. Daca jucatorul a reusit sa termine melodia se considera ca a castigat jocul si se afiseaza un mesaj sugestiv.
Rezultatul proiectului este un joc minimalist care incearca sa imite originalul Piano Tiles. Din cauza unor probleme aparute cu modulul de cititor de card SD nu am reusit sa implementez redarea de sunete asa cum mi-am propus si, in consecinta, a trebuit sa apelez la o varianta mai putin reusita dar care functioneaza.
Arhiva cu surse si schema: pianotiles.zip