This is an old revision of the document!
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()`
Librării:
- Wire.h (pentru comunicația I2C cu LCD-ul)
- LiquidCrystal_I2C.h (pentru controlul display-ului LCD I2C)
Structuri și algoritmi:
- Stări precum SELECTIE_DIFICULTATE, JOC_ACTIV, VERIFICARE_GHICIRE, JOC_TERMINAT, RESTART
- Timer non-blocking bazat pe millis() pentru countdown-ul în timp real
- Debouncing software cu interval de 300ms pentru stabilitatea butoanelor
- Algoritm de construire progresivă a numărului (cifră cu cifră) adaptat pe dificultate
- Generator aleator pentru randomizare
- Sistem de feedback audio adaptat cu frecvențe variabile bazate pe proximitatea ghicirii
- PWM pentru controlul buzzer-ului și generarea tonurilor
- Algoritm de verificare cu feedback directional (prea mic/prea mare)
Funcții implementate:
- `setup()` – inițializare hardware și configurare pin-uri
- `loop()` – bucla principală
- `gestionareSelectieDificultate()` – gestionează selecția și confirmarea nivelului
- `initializeazaJoc()` – setează parametrii specifici dificultății
- `verificaTimp()` – monitorizează timer-ul și actualizează display-ul în timp real
- `verificaGhicire()` – compară numărul introdus cu cel ales random și oferă feedback
- `sunetApropiere()` – calculează și reproduce feedback audio bazat pe distanța până la răspuns
- `resetareGhicireCurenta()` – resetează starea pentru o nouă încercare fără restart complet
- `timpExpirat()` – gestionează sfârșitul jocului când timpul expiră
- `melodieVictorie()`, `sunetEsec()`, `tonScurt()` – funcții audio pentru feedback contextual
- `afisareMeniuDificultate()`, `afisareDificultate()` – gestionarea interfeței 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.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.