This shows you the differences between two versions of the page.
pm:prj2025:rnedelcu:catalin.aldobritei [2025/05/24 18:41] catalin.aldobritei [Rezultate Obţinute] |
pm:prj2025:rnedelcu:catalin.aldobritei [2025/05/28 12:38] (current) catalin.aldobritei [Software Design] |
||
---|---|---|---|
Line 104: | Line 104: | ||
Mediu de dezvoltare: Arduino IDE | Mediu de dezvoltare: Arduino IDE | ||
- | Librării: | + | Librarii: LiquidCrystal_I2C.h |
- | - Wire.h (pentru comunicația I2C cu LCD-ul) | ||
- | - LiquidCrystal_I2C.h (pentru controlul display-ului LCD I2C) | + | Structuri si algoritmi: |
- | Structuri și algoritmi: | + | State machine cu stari: diffSelect, gameOver, selectMode pentru controlul fluxului de executie |
- | - Stări precum SELECTIE_DIFICULTATE, JOC_ACTIV, VERIFICARE_GHICIRE, JOC_TERMINAT, RESTART | + | Timer non-blocking bazat pe millis() pentru countdown-ul in timp real |
- | - Timer non-blocking bazat pe millis() pentru countdown-ul în timp real | + | Debouncing software cu interval de 300ms pentru stabilitatea butoanelor si prevenirea apasarilor multiple |
- | - Debouncing software cu interval de 300ms pentru stabilitatea butoanelor | + | Algoritm de construire progresiva a numarului (cifra cu cifra) adaptat pe dificultate: |
- | - Algoritm de construire progresivă a numărului (cifră cu cifră) adaptat pe dificultate | + | Easy (1-10): doar unitati |
- | - Generator aleator pentru randomizare | + | Medium (1-100): zeci + unitati |
- | - Sistem de feedback audio adaptat cu frecvențe variabile bazate pe proximitatea ghicirii | + | Hard (1-1000): sute + zeci + unitati |
- | - PWM pentru controlul buzzer-ului și generarea tonurilor | ||
- | - Algoritm de verificare cu feedback directional (prea mic/prea mare) | + | Generator aleator pentru randomizare cu randomSeed |
- | Funcții implementate: | + | Sistem de feedback audio adaptat cu frecvente variabile bazate pe proximitatea ghicirii |
- | - `setup()` – inițializare hardware și configurare pin-uri | + | PWM si tone() pentru controlul buzzer-ului si generarea tonurilor |
- | - `loop()` – bucla principală | + | Algoritm de verificare cu feedback directional (prea mic/prea mare) |
- | - `gestionareSelectieDificultate()` – gestionează selecția și confirmarea nivelului | + | Sistem de proximitate inteligent cu praguri adaptive in functie de dificultate |
- | - `initializeazaJoc()` – setează parametrii specifici dificultății | + | Functii implementate: |
- | - `verificaTimp()` – monitorizează timer-ul și actualizează display-ul în timp real | + | setup() – initializare hardware si configurare pin-uri |
- | - `verificaGhicire()` – compară numărul introdus cu cel ales random și oferă feedback | + | loop() – bucla principala cu gestionarea starilor |
- | - `sunetApropiere()` – calculează și reproduce feedback audio bazat pe distanța până la răspuns | + | handleDiffSelect() – gestioneaza selectia si confirmarea nivelului de dificultate |
- | - `resetareGhicireCurenta()` – resetează starea pentru o nouă încercare fără restart complet | + | initGame() – seteaza parametrii specifici dificultatii (limite, timp, pozitii cifre) |
- | - `timpExpirat()` – gestionează sfârșitul jocului când timpul expiră | + | checkTime() – monitorizeaza timer-ul si actualizeaza display-ul in timp real |
- | - `melodieVictorie()`, `sunetEsec()`, `tonScurt()` – funcții audio pentru feedback contextual | + | checkGuess() – compara numarul introdus cu cel ales random si ofera feedback |
- | - `afisareMeniuDificultate()`, `afisareDificultate()` – gestionarea interfeței utilizator | + | 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 | ||
</note> | </note> | ||
Line 186: | Line 198: | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | 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. | ||
===== Download ===== | ===== Download ===== | ||
<note warning> | <note warning> | ||
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | Arhiva {{:pm:prj2025:rnedelcu:guessthenumber.zip|}} |
- | + | ||
- | 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**. | + | |
</note> | </note> | ||