Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:rnedelcu:catalin.aldobritei [2025/05/24 18:07]
catalin.aldobritei [Descriere generală]
pm:prj2025:rnedelcu:catalin.aldobritei [2025/05/28 12:38] (current)
catalin.aldobritei [Software Design]
Line 3: Line 3:
  
 <note tip> <note tip>
-O schema bloc: +Am creat un joc cu Arduino ​care îți permite să ghicești numere. Ai un ecran care îți arată ​informațiile, două butoane pentru a juca, LED-uri ​care se aprind în diferite culori ​și un buzzer care face sunete. 
- +Jocul funcționează in felul urmator: alegi cât de greu vrei să fie poți ghici numere de la 1 la 10 dacă vrei să fie ușor, de la 1 la 100 pentru mediu, sau de la 1 la 1000 dacă vrei să fie greu. Fiecare nivel îți dă timp diferit să ghicești - de la minute ​(cel ușorpână la 1 minut (cel greu). 
-{{:​pm:​prj2025:​rnedelcu:​schema_bloc_aldobritei_catalin.png?​200|}} +Buzzer-ul face sunete diferite să îți arate cât de aproape ești. Dacă ești foarte aproape, sunetele sunt rapide ​și înalte. Dacă ești departe, sunetele sunt lente și joase. 
- +LED-ul verde se aprinde când câștigi, cel roșu când greșești, ​și sunt melodii speciale pentru când câștigi sau pierzi. Introduci numărul cifră ​cu cifră apăsând butoanele, ​și poți să încerci din nou de câte ori vrei fără să oprești jocul.
-Componente Hardware +
-Arduino ​(microcontroller principal) +
-- LCD I2C 16x2 (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+
  
 </​note>​ </​note>​
Line 53: Line 37:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> +Componente Hardware: 
-Aici puneţtot ce ţine de hardware design+ 
-  ​* listă de piese +1. Microcontroller Arduino 
-  ​* 2 butoane + 
-  ​* display LCD +- Model: Arduino UNO (ATmega328P) 
-  ​* placuta ATMega324p + 
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/​electronic-atmega16-mmc-schematic.png) +- Tensiune operare: 5V 
-  * diagrame de semnal ​ + 
-  * rezultatele simulării+- Memorie: 32KB Flash, 2KB SRAM, 1KB EEPROM 
 + 
 +2. Display LCD I2C (16x2) 
 + 
 +- Specificații:​ 16 coloane × 2 rânduri 
 + 
 +- Protocol: I2C (Inter-Integrated Circuit) 
 + 
 +- Tensiune: 5V 
 + 
 +- Pini conectați: 
 +  ​- SDA → A4 
 +  ​- SCL → A5 
 +  ​- VCC → 5V 
 +  ​- GND → GND 
 + 
 +3. LED-uri Indicator 
 + 
 +LED Verde (Succes) 
 + 
 +- Pin Arduino
 + 
 +LED Roșu (Eroare/Timp Expirat) 
 + 
 +- Pin Arduino: 5 
 + 
 +4Butoane de Control 
 + 
 +Buton Selecție 
 + 
 +- Pin Arduino: 2 
 + 
 +Buton Confirmare 
 + 
 +- Pin Arduino: 3 
 + 
 +5Buzzer Audio 
 + 
 +Pin Arduino: A0 
 + 
 +Tip: Buzzer pasiv 
 + 
 +Tensiune: 5V 
 + 
 +- Control: functia `tone()` 
 + 
 +{{:​pm:​prj2025:​rnedelcu:​hardware_aldobritei_catalin1.png?200|}} 
 + 
 +{{:​pm:​prj2025:​rnedelcu:​hardware_aldobritei_catalin2.png?​200|}}
  
 {{:​pm:​prj2025:​rnedelcu:​aldobriteicatalin.jpg?​200|}} {{:​pm:​prj2025:​rnedelcu:​aldobriteicatalin.jpg?​200|}}
  
-</​note>​ 
  
 ===== Software Design ===== ===== Software Design =====
Line 71: Line 102:
  
 <note tip> <note tip>
-Descrierea codului aplicaţiei ​(firmware): +Mediu de dezvoltare: Arduino IDE 
-  * mediu de dezvoltare ​(if any) (e.g. AVR StudioCodeVisionAVR+ 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib+Librarii: LiquidCrystal_I2C.h 
-  * algoritmi şi structuri ​pe care plănuiţi să le implementaţi + 
-  ​* ​(etapa 3surse şi funcţii implementate+ 
 +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, timppozitii 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
 </​note>​ </​note>​
  
Line 81: Line 168:
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute ​în urma realizării proiectului vostru.+Proiectul și-a atins toate obiectivele,​ creând un joc fara probleme.  
 + 
 + 
 + 
 + 
 +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 
 </​note>​ </​note>​
  
 ===== 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>​
  
pm/prj2025/rnedelcu/catalin.aldobritei.1748099249.txt.gz · Last modified: 2025/05/24 18:07 by catalin.aldobritei
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0