Introducere



Numele proiectului este MemoPlus iar scopul sau este de a dezvolta memoria vizuala a utilizatorului prin retinerea unei secvente cat mai mare de leduri aprinse.
Initial jocul incepe cu o secventa de 2 leduri si creste cu 3 la fiecare finalizare a unui unui nivel. Sunt posibile maxim 6 niveluri astfel incat la terminarea jocului utilizatorul va trebui sa retina o secventa de 17 leduri.

Descriere Generala



Realizarea proiectului a presupus folosirea urmatoarei scheme bloc :

Datele preluate de la utilizator sunt reprezentate de apasarile butoanelor care formeaza tastatura, iar modificarile sunt vizibile prin aprinderea ledurilor.

Hardware Design



Componentele necesare pentru realizarea proiectului sunt :

  • placa realizata pentru etapa 1

  • tastatura formata din 7 butoane

  • interfata leduri formata din 9 butoane care reprezinta zona de joc si sase butoane pe care se reprezinta scorul

  • elemente de interconectare a tuturor elementelor

Software design



Scrierea efectiva a codului a fost realizata in Notepad++, iar obtinerea fisierelor executabile a fost realizata prin intermediului compilatorului avr-gcc
Pentru a usura modalitatea de compilare si incarcare a programului pe mircrocontroler am create un fisiere makefile si am folosit programul avrusbboot
Starile prin care poate trece programul in cursul unei executii normale :


Realizarea programului a presupus implementarea unor functii care sa permita lucrul cat mai usor cu cele 16 leduri si cu preluarea butoanelor apasate de la utilizator :

void turnOffLight(int px,int py);//stinge ledurile pentru joc
void setLights();//seteaza luminile de joc
void Lights();//seteaza luminile de scor
void setKeyboard();//seteaza butoanele pentru tastatura
int getPressedButton();//preia un buton apasat
void waitPressedButton(int button);//apasa eliberarea unui buton
void switchScor(int x);//modifica starea unui led de scor
void turnOffScor(int x);//stinge un led de scor
void turnOnScor(int index);//aprinde un led de scor
void clearScor();//stinge toate ledurile de scor
void setAllScor(); //aprinde toate ledurile de scor
void switchPosLight(int px,int py);//schimba starea unui led de joc
void turnOffLight(int px,int py);//stinge un led de joc
void switchLight();//schimba stare ledului de joc selectat
void switchIndexLight(int index);//schimba starea unui led joc dupa index
void incLight(int type,int value );//modifica ledul de joc selectat
void incX();//aprinde urmatorul led pe axa ox
void decX();//aprinde ledul anterior pe axa ox
void incY();//aprinde urmatorul led pe axa oy
void decY();//aprinde ledul anterior pe axa oy
void setPattern();//seteaza o secventa aleatoare
void turnLightsOn();//aprinde toate ledurile
int getPattern();//preia secventa de la utilizator
void winLights();//aprinde ledurile de castig ale jocului
void intro();//aprinde toate ledurile si asteapta inceperea jocului


Ledurile au fot conectate fiecare la cate un port al microcontroler-ului si la ground prin folosirea unei rezistente de 200 Ohmi. Desi este destul de ineficient din punctul de vedere al numarului de portului folosite, a fost mai simplu de lipit pe placa de test.
Am folosit porturile A si C pentru interconectare. Modul de lipire nu este foarte important, conteaza doar realizarea ulterioara a corespondentei intre led si port.
Butoanele au fost plasate pe placa de test in urmatorul mod, pentru a forma tastatura :

Ok   Aux   No
     Up
left    right
    down


Pentru interconectarea cu microcontrolerul am folosit port B si la fel ca si in cazul ledurilor, conteaza doar realizarea corespondetei intre port si buton.

Rezultate obtinute



  • Tastatura si elementul de interconectare

  • Interfata de leduri si elementele de interconectare

  • Placa principala si interfata de leduri

  • Proiectul final

Conluzii



Proiectul a fost unul interesant si m-a ajutat sa inteleg modul in care se poate crea un produs fizic, pe care se poate incarca soft, pentru a obtine un joc distractiv.

Bibliografie

Resurse

pm/prj2010/rtataroiu/memo_plus.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