Find-the-Pairs Game

Autorul poate fi contactat la adresa: anasecuiu@yahoo.com

Introducere

Proiectul propune un joc de memorie vizuala, prin care jucatorul poate afisa pe LCD, prin apasarea unui buton, niste imagini ascunse. Imaginile sunt selectate doua cate doua, iar cand jucatorul apasa butoanele corespunzatoare a doua imagini identice succesiv, perechea se considera gasita. In momentul in care sunt gasite toate perechile, jocul este castigat si, ca premiu, este redata o melodie prin difuzor. Daca jucatorul introduce mai multe incercari decat ii este permis fara sa gaseasca toate perechile, jocul este pierdut.

Scopul jocului este antrenarea memoriei vizuale a jucatorului si relaxarea.

Descriere Generală

Schema bloc a proiectului este următoarea:

Jucătorul comunică cu microcontrollerul prin apăsarea butoanelor. La apăsarea unui buton, microcontrollerul afișează pe LCD imaginea asociată acestui buton. Microcontrollerul și LCD-ul vor comunica prin protocloul I2C. Dacă microcontrollerul detectează o pereche gasită, el va comanda aprinderea celor doua LEDuri asociate butoanelor pereche, pentru ca jocatorul sa stie ca aceste butoane au iesit din joc. Cand microcontrollerul detectează sfârșitul jocului, dacă jucătorul a câștigat, va comanda buzzerului difuzarea unei melodii. Atât microcontrollerul, cât și LCD-ul, au nevoie de o sursă de tensiune pentru a funcționa.

Hardware Design

Lista de piese:

  • 8 butoane
  • 8 LED-uri
  • 8 rezistențe 470 ohmi
  • buzzer pasiv
  • condensator polarizat pentru buzzer
  • plăcuța de bază cu microcontroller ATMEGA324PA
  • LCD

Schema electrică

Software design

Pentru dezvoltare, am folosit mașina virtuală pusă la dispoziție de echipa de PM.

Algoritmul de joc folosește structuri de date care asociază fiecare buton cu LED-ul din dreptul său și structuri de date pentru asocierea a două perechi (LED și buton) cu o anumită imagine, afișată pe LCD. Aceste perechi se aleg în mod aleator, pentru ca jocul să aibă o nouă configurație a imaginilor la fiecare rulare.

Prin apăsarea unui buton, se apelează funcția execute_commands() aferentă acelui buton, care presupune determinarea LED-ului asociat și a imaginii corespunzătoare butonului. Este afișată imaginea pe LCD (funcția draw_image()), se aprinde LED-ul aferent butonului și se verifică dacă butonul apăsat înainte este perechea butonului curent (funcția check()). În cazul în care au fost apăsate consecutiv două butoane pereche, LED-urile asociate acestora rămân aprinse și perechea se consideră descoperită.

Când se descoperă toate cele 4 perechi, buzzerul redă melodia „We are the champions”, de la Queen, transcrisă de mine la pian, apoi în frecvențe. Codul aferent melodiei se găsește în fișierele separate music.c și music.h. Afișarea pe LCD folosește funcțiile definite în biblioteca ST7735R_TFT.h, preluate din arhiva de soluții a laboratorului.

Rezultate obținute

Rezultatul final

produs_final.jpeg

Boardul de joc

board-ul_de_joc.jpeg

Lipituri pe spatele boardului de joc

lipituri_placuta_test.jpeg

Download

Concluzii

Mi-a făcut plăcere să lucrez la acest proiect, mai ales pentru că am înțeles mai bine conceptele din laboratoare pe care le-am refolosit în proiect, pentru că am avut satisfacția de a lucra la ceva concret, palpabil, mai mult decât software.

Jurnal

Săptămâna 1: Am lipit plăcuța și am venit cu ideea de proiect.

Săptămâna 2: Am făcut lista de piese, am dat comandă de piese și a terminat de lipit plăcuța.

Săptămâna 3: Am terminat de lipit butoanele, LED-urile și buzzerul pe plăcuța adițională.

Săptămâna 4: Am conectat LCD-ul și am lucrat la elaborarea codului.

Săptămâna 5: Am adus îmbunătățiri codului și am testat jocul în cât mai multe moduri.

pm/prj2019/ctranca/find-the-pairs-game.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0