Componente Hardware - Arduino (microcontroller principal) - LCD I2C 16×2 (afișare informații) - 2 LED-uri (feedback vizual - verde/roșu) - 2 Butoane (input utilizator - selecție/confirmare) - Buzzer (feedback audio)
Module Software - Modul Inițializare - configurare hardware și meniu principal - Modul Dificultate - selecție nivel și setare parametri - Modul Joc Principal - loop principal cu timer și input - Modul Verificare - logica de ghicire și feedback - Modul Audio - sisteme de sunete contextuale
Ordinea de executie: Inițializare → Selecție Dificultate → Joc Activ → Feedback → Reset/Restart
Componente Hardware:
1. Microcontroller Arduino
- Model: Arduino UNO (ATmega328P)
- Tensiune operare: 5V
- Memorie: 32KB Flash, 2KB SRAM, 1KB EEPROM
2. Display LCD I2C (16×2)
- Specificații: 16 coloane × 2 rânduri
- Protocol: I2C (Inter-Integrated Circuit)
- Tensiune: 5V
- Pini conectați:
3. LED-uri Indicator
LED Verde (Succes)
- Pin Arduino: 4
LED Roșu (Eroare/Timp Expirat)
- Pin Arduino: 5
4. Butoane de Control
Buton Selecție
- Pin Arduino: 2
Buton Confirmare
- Pin Arduino: 3
5. Buzzer Audio
- Pin Arduino: A0
- Tip: Buzzer pasiv
- Tensiune: 5V
- Control: functia `tone()`
Librarii: LiquidCrystal_I2C.h
Structuri si algoritmi:
State machine cu stari: diffSelect, gameOver, selectMode pentru controlul fluxului de executie
Timer non-blocking bazat pe millis() pentru countdown-ul in timp real
Debouncing software cu interval de 300ms pentru stabilitatea butoanelor si prevenirea apasarilor multiple
Algoritm de construire progresiva a numarului (cifra cu cifra) adaptat pe dificultate:
Easy (1-10): doar unitati
Medium (1-100): zeci + unitati
Hard (1-1000): sute + zeci + unitati
Generator aleator pentru randomizare cu randomSeed
Sistem de feedback audio adaptat cu frecvente variabile bazate pe proximitatea ghicirii
PWM si tone() pentru controlul buzzer-ului si generarea tonurilor
Algoritm de verificare cu feedback directional (prea mic/prea mare)
Sistem de proximitate inteligent cu praguri adaptive in functie de dificultate
Functii implementate:
setup() – initializare hardware si configurare pin-uri
loop() – bucla principala cu gestionarea starilor
handleDiffSelect() – gestioneaza selectia si confirmarea nivelului de dificultate
initGame() – seteaza parametrii specifici dificultatii (limite, timp, pozitii cifre)
checkTime() – monitorizeaza timer-ul si actualizeaza display-ul in timp real
checkGuess() – compara numarul introdus cu cel ales random si ofera feedback
resetGuess() – reseteaza starea pentru o noua incercare fara restart complet
timeUp() – gestioneaza sfarsitul jocului cand timpul expira
showDiffMenu() – afiseaza meniul principal de selectare dificultate
showDiff() – afiseaza dificultatea curenta selectata
proximitySound() – calculeaza si reproduce feedback audio bazat pe distanta pana la raspuns
winSound() – melodie de victorie cu tonuri crescatoare
failSound() – sunet de esec cu tonuri descrescatoare
quickBeep(), shortBeep(), confirmBeep() – feedback audio pentru actiuni utilizator
Limitări identificate:
-Lipsa persistenței datelor la restart (scoruri, statistici)
-Feedback audio limitat la un singur buzzer (monoton)
-Interface fixă fără personalizare pentru utilizatori
-Dependența de alimentarea externă (fără baterie)
Ce mai poate fi adaugat:
-LED RGB pentru efecte vizuale mai complexe în loc de LED-urile simple
-Card SD pentru salvarea scorurilor și statisticilor de joc
-Mod Multiplayer - doi jucători alternează
-Mod Sprint - ghicește cât mai multe numere în timp limitat
Proiectul a fost finalizat cu succes, demonstrând funcționarea stabilă a tuturor componentelor și modulelor implementate. Experiența de dezvoltare a oferit cunoștințe practice în programarea Arduino și integrarea sistemelor embedded. Rezultatele obținute confirmă eficiența soluțiilor adoptate pentru realizarea jocului.