Ştefan-Alexandru PREDA (25431) - Hangman pe LCD

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul consta in realizarea jocului Hangman folosind un display LCD pentru afisare si un grup de LED-uri pentru afisarea numarului de vieti ramase.

Jocul consta in deducerea unui cuvant prin incercari succesive de litere. In starea initiala sunt afisate doar prima si ultima litera si toate LED-urile sunt aprinse. De fiecare data cand o litera care nu este cuprinsa in cuvant este introdusa se stinge un LED. Jocul se termina atunci cand cuvantul este descoperit sau toate LED-urile s-au stins.

Scopul acestui proiect este unul de divertisment, dar poate fi si educational.

Ideea de la care am pornit este jocul popular de Spanzuratoarea care este jucat de obicei pe hartie.

Proiectul este util pentru divertismentul oferit.

Descriere generală

Schema bloc:

Componentele necesare:

• Alimentarea

• Placa de baza cu microcontroller-ul Atmega324

• Display LCD: pentru a afisa cuvantul utilizatorului

• 6 LED-uri: pentru a reprezenta numarul de vieti ramase

• Keypad: pentru a prelua input de la utilizator

Hardware Design

Lista piese:














Schema electrica:

Software Design

Proiectul a fost realizat in Sublime Text si compilat folosind WinAVR.
Jocul porneste prin afisarea unui cuvant pe ecran pe care utilizatorul va incerca sa il ghiceasca. Acesta va introduce litere de la keypad asemanator cum se introduc la tastatura unui telefon mobil. Se apasa pe cifrele 1-9 pentru a introduce litere (in ordine alfabetica de la 1 la 9, cate 3 litere pe o cifra, ex. o apasare pe 1 = a, 2 apasari = b, 3 apasari = c). Pentru a confirma litera aleasa se apasa pe tasta '*'. Pentru a reseta jocul se apasa pe butonul de reset al placii de baza. La fiecare resetare se alege un cuvant diferit.

Interfata cu LCD-ul:

void clearDisplay(void);		//Sterge ecranul LCD-ului si pozitioneaza cursorul pe pozitia de inceput
void functionSet(void);			//Seteaza modul de functionare al LCD-ului
void displayON(void);			//Activeaza display-ul, cursorul si blink pentru cursor
void entryModeSet(void);		//Seteaza modul de scriere, directia de scriere si deplasarea
void init(void);			//Seteaza pinii de pe placa de baza corespunzator
void LCDstart(void);			//Initializeaza complet LCD-ul pe baza functiilor anterioare
void LEDstart(void);			//Seteaza pinii de pe placa de baza ca iesire
void printChar(char);			//Afiseaza un caracter la pozitia curenta a cursorului
void printString(char *);		//Afiseaza un cuvant la pozitia curenta a cursorului
void setCursor(int, int);		//Muta cursorul la pozitia indicata de parametrii

Interfata cu celelalte componente ale proiectului:

void KEYPADstart(void);			//Seteaza pinii de pe placa de baza corespunzator si pregateste tastatura de folosire
void initrand(void);			//Initializeaza seed-ul pentru rand folosind memoria eeprom
void setupGame(void);			//Initializeaza datele unui joc
char getLetter(void);			//Preia input de la tastatura. Functia este blocanta.
void killLED(void);			//Stinge urmatorul LED din linie
void play(void);			//Functia de joc

Rezultate Obţinute

Rezultatele constau in implementarea atat a partii hardware cat si a partii software. Acestea pot fi vizualizate in urmatoarele imagini:

Concluzii

Proiectul este complet functional. A fost un proiect interesant si distractiv chiar daca m-am chinuit putin cu tastatura. Dificultatile au fost mai mult pe partea de hardware decat de software. Consider ca este o experienta din care am avut multe de invatat

Download

Bibliografie/Resurse

pm/prj2016/drugescu/spark.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