Elena-Miruna GAGEA (87707) - Memory Game

Introducere

Joc de memorie cu opt LED-uri si opt butoane pentru un singur jucator. Cele opt LED-uri se vor aprinde secvential, formand un pattern pe care jucatorul va trebui sa il reproduca prin apasarea butoanelor corespunzatoare. Difuzorul il va anunta pe jucator daca a reprodus corect secventa de leduri aprinse, iar daca toate secventele au fost reproduse corect va anunta finalul si terminarea cu succes a jocului. Acesta din urma va avea mai multe nivele cu grade diferite de dificultate.

Am ales acest joc deoarece antreneaza memoria si il relaxeaza pe jucator.

Descriere Generala

Ca input vom avea butoanele, iar ca output vom avea LED-urile si difuzorul.

Hardware Design

Lista de piese:

  • placuta cu toate componentele de baza
  • 8 leduri
  • 8 butoane PUSH
  • fire conectoare
  • difuzor
  • placuta de test

Schema electrica

Software Design

Mediul de dezvoltare:

  • Eagle 9.0.0 pentru schema electrica
  • Sublime Text 2 pentru editare
  • BootloaderHID CLI pentru incarcarea fisierului binar
  • avr-gcc pentru compilare

Functii si implementare

  1. void helloDance(); → functie care afiseaza o secventa de salut la pornirea jocului.
  2. void winRound(); → functie care afiseaza o secventa la castigarea unei runde.
  3. void ledON(int led, int scurt); → functie care aprinde un led la o anumita intensitate in functie de caz.
  4. void buzz(int tip); → functie care face difuzorul sa sune.
  5. void sequenceGenerator(int secventa[], int runda); → functie care genereaza secventa in functie de dificultatea aleasa.
  6. void levelSelector(); → functie care selecteaza nivelul de dificultate.
  7. int checkButtons(int secventa[], int runda); → functie care verifica secventa de butoane apasate.

Detalii de implementare si functionare:

Odata ce se conecteaza placuta se aprind ledurile in seventa de “Hello” (este apelata helloDance()) si se asteapta selectarea nivelului de dificultate de catre jucator.

Imediat ce s-a selectat nivelul se genereaza un numar de secvente random (sunt apelate sequenceGenerator() si ledON()). Se asteapta ca utilizatorul sa reproduca secventa de leduri prin apasarea butoanelor si de verifica daca secventa este corecta (checkButtons()). Daca secventa este corecta se aprind ledurile anuntand ca runda a fost castigata (winRound()) alt fel jocul este pierdut si se aprinde secventa de leduri corespunzatoare pierderii jocului. Daca toate rundele au fost castigate atunci se aprinde secventa de leduri pentru joc castigat.

Functia buzz este folosita atunci cand se apasa butoanele, cand jocul este castigat/pierdut la castigarea unei runde si la secventa de “hello” de la inceputul jocului

Rezultate obtinute

Joc pierdut: https://youtu.be/wH80vP4gw8k

Joc castigat: https://youtu.be/zr42Rdlbvyo

Download

Arhiva cu surse si readme: gagea_elena-miruna_336cc.zip

Documentatia in format PDF: PDF

Jurnal

15-aprilie-2019 - alegerea temei proiectului

17-aprilie-2019 - achizitionarea placutei si a componentelor de baza.

19-aprilie-2019 - achizitionarea componentelor specifice necesare pentru proiect.

23-aprilie-2019 - lipirea componentelor de baza pe placuta.

24-aprilie-2019 - schema electrica realizata cu EAGLE

14-15-mai-2019 - lipirea componentelor ramase pe placuta auxiliara.

16-mai-2019 - bootloader.

18-mai-2019 - scriere cod, makefile si reparat lipiturile gresite.

23-mai-2019 - finalizare documentatie wiki.

Bibliografie

Resurse software Datasheet ATMEGA: http://cs.curs.pub.ro/wiki/pm/_media/doc8272.pdf

Schema PCB si placa proiect: http://cs.curs.pub.ro/wiki/pm/cablaj/proiect2019

Bootloader: http://cs.curs.pub.ro/wiki/pm/tutorial/bootloader

Schelet de cod: http://cs.curs.pub.ro/wiki/pm/lab/lab1 , http://cs.curs.pub.ro/wiki/pm/lab/lab2 , http://cs.curs.pub.ro/wiki/pm/lab/lab3

EAGLE: http://www.cadsoftusa.com/

SublimeText2: https://www.sublimetext.com/2

pm/prj2019/astratulat/gagea336.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