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
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.