Sistemul oferă feedback vizual prin LED-uri (verde pentru succes, roșu pentru eșec) și feedback sonor prin buzzer. Jocul include mai multe niveluri de dificultate (Ușor, Mediu, Greu) și permite jucătorului să facă maximum 6 greșeli înainte de a pierde.
Scopul proiectului este să combine concepte esențiale de programare embedded: interfațarea cu LCD prin I2C, gestionarea input-urilor prin butoane, feedback vizual/audio și implementarea unei logici de joc interactive.
Sistemul se bazează pe microcontrollerul Arduino UNO (ATmega328P) care acționează ca unitate de control principală. Comunicarea cu LCD-ul se realizează prin protocolul I2C la adresa 0x27, reducând numărul de pini necesari.
La pornire, jucătorul selectează categoria de cuvinte și nivelul de dificultate folosind butoanele LEFT/RIGHT pentru navigare și SELECT pentru confirmare. Sistemul alege aleator un cuvânt din categoria selectată și afișează numărul de litere.
În timpul jocului, jucătorul navighează prin alfabetul A-Z cu butoanele LEFT/RIGHT și selectează litere cu butonul SELECT. Fiecare literă ghicită corect este afișată pe pozițiile corespunzătoare, iar greșelile sunt contorizate și vizualizate prin desenarea progresivă a spânzurătorii pe LCD.
Jocul se termină prin victorie (toate literele ghicite) sau înfrângere (6 greșeli), cu posibilitatea de restart automată.
Nume Componentă | Cantitate | Descriere |
— | — | — |
Arduino UNO R3 | 1 | Microcontroller ATmega328P |
LCD 16×2 cu I2C | 1 | Display cu interfață I2C (adresa 0x27) |
Butoane tactile | 3 | LEFT, SELECT, RIGHT |
LED Verde | 1 | Feedback pozitiv |
LED Roșu | 1 | Feedback negativ |
Buzzer Pasiv | 1 | Feedback audio |
Rezistențe 220Ω | 3 | Pentru LED-uri si Buzzer |
Rezistențe 10kΩ | 3 | Pull-down pentru butoane |
Breadboard | 1 | Montaj circuit |
Fire de conectare | Diverse | Conexiuni |
Funcționalitate hardware & conexiuni
1. Arduino UNO
2. LCD 16×2 cu I2C
3. Butoane
4. LED-uri
5. Buzzer pasiv (pin 7)
Tabel cu alocarea pinilor
Pin Arduino | Funcție | Nume Reg. MCU | Direcție | Motiv alegere |
— | — | — | — | — |
2 | Buton LEFT | PD2 | IN | Navigare alfabet |
4 | Buton SELECT | PD4 | IN | Selecție literă |
6 | Buton RIGHT | PD6 | IN | Navigare alfabet |
7 | Buzzer | PD7 | OUT | Feedback audio |
8 | LED Verde | PB0 | OUT | Feedback pozitiv |
10 | LED Roșu | PB2 | OUT | Feedback negativ |
A4 | SDA (I2C) | PC4 | OUT | Date către LCD |
A5 | SCL (I2C) | PC5 | OUT | Ceas I2C |
Biblioteci utilizate
Structura software Programul este organizat în următoarele module functionale:
1. Inițializare (setup())
2. Selecția configurației (start())
3. Bucla principală (loop())
4. Afișare și feedback (drawGame(), drawHangman())
5. Logica de joc (hasWon(), gameOver())
Funcționalități implementate
Algoritmi principali
1. Algoritm de navigare:
2. Algoritm de verificare literă:
3. Algoritm de verificare victorie:
4. Algoritm de afișare spânzurătoare:
Caracteristici finale: - 24 de cuvinte organizate în 4 categorii - 3 niveluri de dificultate funcționale - Interface LCD clar și responsive - Feedback audio/vizual consistent - Sistem de restart automat functional
Îmbunătățiri posibile: - Adăugarea unui card SD pentru cuvinte suplimentare - Implementarea unui sistem de scoruri - Timer pentru limitarea timpului de joc - Mai multe categorii de cuvinte
Proiectul a demonstrat cu succes implementarea unui joc interactiv pe platformă Arduino, combinând multiple concepte de programare embedded: interfațarea I2C, gestionarea input-urilor, generarea de sunete și crearea unei interfețe utilizator intuitive.
Aspectele cele mai valoroase ale implementării: - Utilizarea eficientă a caracterelor personalizate LCD pentru grafică - Organizarea modulară a codului pentru ușurință în dezvoltare - Implementarea unui sistem de feedback multi-modal (vizual/audio) - Gestionarea corectă a stărilor de joc și tranziților
Proiectul oferă o bază solidă pentru dezvoltarea ulterioară și poate fi extins cu funcționalități suplimentare cum ar fi conectivitate, scoruri online sau AI pentru generarea dinamică de cuvinte.
Arhiva spanzuratoarea.zip