This is an old revision of the document!


Memory Game

Autor: Dicu Florin-Catalin

Grupa: 332CB

Introducere

Joc de memorie bazat pe retinerea si reproducerea secventelor de culori afisate de led-uri. Dupa ce secventa de culori a fost afisata, jucatorul trebuie sa apese butoanele corespunzatoare ordinii ledurilor. La apasarea butoanelor un buzzer va scoate un sunet care sa confirme daca butonul apasat este corect sau gresit. Scorul va fi afisat pe un display, iar dificultatea jocului creste in functie de scorul curent.

Descriere generală

Pentru a incepe jocul, se va apasa pe oricare dintre butoane. Pe ecran se va afisa scorul curent(0 pentru inceputul jocului). Se vor aprinde pe rand cele 4 leduri corespunzatoare secventei de culori, iar jucatorul trebuie sa o reproduca folosind cele 4 butoane. Atunci cand jucatorul va introduce corect secventa buzzer-ul va produce un sunet, scorul va creste si va fi afisata o noua secventa de culori, mai complicata decat cea anterioara. Daca timpul jucatorului a expirat sau daca acesta a apasat butoanele in ordinea gresita, buzzer-ul va produce un alt sunet iar jocul se va termina.

Schema bloc

Hardware Design

=== Lista de piese: ===

  • Arduino UNO
  • 4 LED-uri
  • 4 butoane
  • Buzzer
  • Componente de baza
  • Modul RTC

=== Schema electrica ===

Software Design

Pentru a scrie codul am folosit Arduino IDE. Pentru a lucra cu un ecran LCD I2C am folosit libraria LiquidCrystal_I2C, iar pentru modulul cu ceas in timp real libraria ds3231.

In funtia de setup am initializat ledurile, butoanele, LCD-ul si modulul cu ceas in timp real. Functia de loop aprinde pe rand ledurile atata timp cat jucatorul nu a apasat pe niciun buton. Dupa ce a fost apasat pe un buton, se afiseaza nivelul curent, scorul, si se vor apela functiile care genereaza secventa, o afiseaza si o citeste pe cea primita de la jucator. Functia generare_secventa va genera o secventa de culori, corespunzatoare nivelului curent. Functie show_secventa va afisa secventa de culori generata, iar functia get_secventa asteapta sa primeasca de la jucator o secventa de culori, si verifica daca aceasta este cea corecta. De altfel, functia get_secventa cronometreaza timpul trecut de la afisarea secventei, iar in cazul in care trec 30 de secunde, jucatorul pierde.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Am implementat toate functionalitatile pe care mi le-am propus. Proiectul, desi nu a fost cel mai complicat, a fost foarte interesant, deoarece am invatat cum sa conectez diferite module, butoane si leduri la o placuta arduino. Partea software nu mi-a pus mari dificultati, majoritatea lucrurilor fiind facute in cadrul labortatoarelor.

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2022/cristip/memorygame.1653988843.txt.gz · Last modified: 2022/05/31 12:20 by florin_catalin.dicu
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