MEMORY GAME

Autor: Mihai Jelea 333CB

Introducere

Descriere generala

“Memory Game” este un joc de memorie, asa cum sugereaza si numele.

Utilizatorul trebuie sa reproduca cu exactitate secventa de aprindere a unor LED-uri, apasand in ordinea corecta butoanele corespunzatoare fiecaruia dintre LED-uri.

Descrierea modului de joc

START:

1. LED-urile incep sa se aprinda, secvential, intr-o ordine aleatoare si cu o anumita viteza.

2. Se sting toate LED-urile si se asteapta input-ul utilizatorului.

3. Utilizatorul apasa pe butoanele corespunzatoare LED-urilor, in ordinea memorata, incercand sa reproduca cu corectitudinte secventa lor de aprindere.

4. In momentul in care nu se apasa butonul corect, jocul se opreste: STOP.

5. Daca secventa introdusa este cea corecta, jocul semnalizeaza ca jocul a fost castigat.

6. Jocul se reia, insa se sporeste gradul de dificultate: viteza mai mare de aprindere a LED-urilor si secventa mai lunga.

7. Se reiau pasii anteriori pana cand utilizatorul greseste.

STOP.

Scopul dispozitivului

Scopul acestui joc este unul pur recreational.

Hardware Design

Componente necesare

  • 6 LED-uri
  • 6 butoane push-down
  • 6 rezistente 270 ohm
  • 6 pini conectori (pentru LED-uri)
  • 6 pini conectori (pentru butoane-uri)
  • pini pentru legarea la masa
  • cabluri de legatura + conectori
  • placuta suport

Montaj

Butoanele se conecteaza la ATmega16 prin pinii PC0, PC1, PC2, PC3, PC4, PC5

Led-urile se conecteaza la ATmega16 prin pinii PA0, PA1, PA2, PA3, PA4, PA5

Mesele se leaga la PA7, PC7

Software Design

Functii auxiliare

  • Functia de aprindere a unui LED
  • Functia de randomizare, care realizeaza aprinderea aleatoare a LED-urilor
  • Functia care verifica ce buton a fost apasat
  • Functia de intarziere a aprinderii LED-urilor.
  • Functia GAME WON: realizeaza aprinderea tuturor LED-urilor, pentru a indica ca secventa introdusa este cea corecta. Daca se ajunge la ultimul nivel, se aprind de 3 ori.

Functia MAIN

  1. Se seteaza pinii portului A ca pini de iesire
  2. Se seteaza pinii portului C ca pini de intrare
  3. Activam rezistenta de pull-up pe portul C
  4. Se seteaza si se memoreaza secventa curenta de joc (modul de aprindere al LED-urilor)
  5. Se verifica daca jocul s-a terminat. Daca da, atunci se apeleaza functia game_won de 3 ori pentru a indica acest lucru
  6. Se reda secventa curenta
  7. Se verifica butoanele apasate. Daca nu este apasat butonul corect, jocul se termina, semnalizand asta prin apelarea functiei game_won, o singura data. In caz contrar, secventa de joc se mareste cu o unitate, adica la urmatorul nivel, se va aprinde aceasi secventa ca si la nivelul anterior, la care se mai adauga o noua aprindere aleatoare.
  8. Algoritmul se reia, intr-o bucla while(1). Programul se termina fie in momentul in care utilizatorul a apasat butonul gresit, fie in momentul in care s-a ajuns la ultimul nivel, adica jocul a fost castigat.

Download

Arhiva contine codul sursa intr-un fisier C si un Makefile.

Memory Game - Source Files

Rezultate obtinute

In final jocul nu a fost functional. Dupa programarea microprocesorului, LED-urile nu se aprindeau. Am incercat sa incarc un program simplu care sa aprinda cateva dintre LED-uri, pentru a determina problema.

Dupa procesul de depanare am constatat ca din punct de vedere electric montajul este functional. Partea software pare la fel, in regula.

Dupa parerea mea a fost o problema cu bootloaderul.

Concluzii

Pentru ca, in final, proiectul sa fie functional, ar fi trebuit sa ma ocup de el inca de la inceputul semestrului.

Faptul ca testarile au inceput cu o saptamana inainte de prezentare a constituit o greseala.

Daca as fi venit la laborator cu proiectul terminat, in stare nefunctionala, cu 2 saptamani inainte de prezentarea finala, as fi putut beneficia de ajutorul laborantului.

Bibliografie

Datasheet ATMEGA16

Simon Game on ATMEL

C Programming and the ATMega16

Laboratoare PM

Getting started with C Programming for ATMEL

Experienta colegilor din anii trecuti pentru proiecte similare(dificultatile intampinate si solutiile gasite).

pm/prj2012/amocanu/1337.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