Autorul poate fi contactat la adresa: Login pentru adresa
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.
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
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
Rezultatele constau in implementarea atat a partii hardware cat si a partii software. Acestea pot fi vizualizate in urmatoarele imagini:
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