Memory Test

Introducere

Proiectul constă în realizarea unui joc de memorie similar jocului “chimp test”: pe un LCD vor apărea primele N numere (N fiind incrementat la fiecare rundă) la poziții aleatorii, apoi acestea vor dispărea, urmând ca jucătorul să ghicească aceste numere, la pozițiile corecte, în ordine, folosind un joystick.

Descriere generală

Desfășurarea jocului este următoarea: se vor afișa cele N (inițial 4) numere și se va folosi joystick-ul pentru a selecta pozițiile corespunzătoare pe ecran. După selectarea poziției numărului 1, numerele vor dispărea (vor fi acoperite). În cazul în care poziția unui număr este selectată corect se va aprinde LED-ul în culoarea verde, iar în cazul unei greșeli în culoarea roșu. Sunt permise 3 greșeli per rundă. Pentru a trece la următoarea rundă, respectiv pentru a relua runda în cazul depășirii numărului maxim de greșeli se va apăsa butonul. Jocul permite 3 runde terminate greșit, după care acesta se încheie. Jocul se consideră câștigat după terminarea corectă a ultimei runde, când N este 9. La finalul jocului se afișează timpul mediu de răspuns al jucătorului. Se poate începe un nou joc prin apăsarea butonului.

Schema bloc:

Hardware Design

Listă de piese:

  • Arduino Uno
  • LCD I2C
  • LED RGB
  • Joystick
  • Buton
  • Breadboard
  • Fire de legătură

Schema electrică:

Software Design

A fost folosit mediul de dezvoltare Arduino IDE.

Pentru interacționarea cu LCD-ul s-a folosit biblioteca LiquidCrystal_I2C.

Au fost utilizate următoarele noțiuni din cadrul laboratoarelor:

  • întreruperi: pentru detectarea apăsării butoanelor
  • timer: pentru măsurarea timpului
  • I2C: pentru comunicarea cu LCD-ul

Codul scris este prezentat în cadrul fișierului README.

Rezultate Obţinute

Începutul unei runde:

După ce se apasă numărul 1:

Finalul rundei dacă s-au selectat toate pozițiile numerelor în ordine:

Finalul rundei dacă au fost realizate 3 greșeli:

Finalul jocului dacă s-a realizat corect ultima rundă:

Finalul jocului dacă 3 runde au fost realizate în mod greșit:

Concluzii

Realizarea acestui joc a fost o activitate interesantă, care a presupus aplicarea unor concepte învățate în cadrul laboratorului. De exemplu, inițial, timpul nu era măsurat corect deoarece prescaler-ul timer-ului avea setată o valoare prea mică, însă dupa modificarea acestuia, s-au obținut rezultate corecte. De asemenea, în cadrul întreruperii pentru butonul joystick-ului a fost nevoie să se trateze o singură apăsare de buton, printr-o metodă de debouncing. Astfel, proiectul final prezintă toate funcționalitățile propuse.

Download

Bibliografie/Resurse

pm/prj2023/drtranca/madalina.frant.txt · Last modified: 2023/05/29 22:54 by madalina.frant
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