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:06]
catalin.aldobritei [Introducere]
pm:prj2025:rnedelcu:catalin.aldobritei [2025/05/28 12:38] (current)
catalin.aldobritei [Software Design]
Line 1: Line 1:
 ====== Guess the number ====== ====== Guess the number ======
 ===== Introducere ===== ===== Introducere =====
 +
 +<note tip>
 +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 2 minute (cel ușor) până la 1 minut (cel greu).
 +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.
 +
 +</​note>​
 +===== Descriere generală =====
  
 <note tip> <note tip>
Line 25: Line 34:
  
 </​note>​ </​note>​
-===== Descriere generală ===== 
  
-<note tip> +===== Hardware Design =====
-O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.+
  
-Exemplu de schemă blochttp://​www.robs-projects.com/​mp3proj/​newplayer.html+Componente Hardware:
  
-Implementarea jocului Guess the number folosind un display LCD, 3 butoane si LED-uri. Pe display vor aparea diferite hint-uri pentru joc. Scopul jocului este de a ghici numarul ales intr-un timp limitat folosind indicatiile de pe display.+1Microcontroller Arduino
  
-</​note>​+- Model: Arduino UNO (ATmega328P)
  
-===== Hardware Design =====+- Tensiune operare: 5V
  
-<note tip> +- Memorie: 32KB Flash, 2KB SRAM, 1KB EEPROM 
-Aici puneţtot ce ţine de hardware design+ 
-  ​* listă de piese +2. Display LCD I2C (16x2) 
-  ​* 2 butoane + 
-  ​* display LCD +- Specificații:​ 16 coloane × 2 rânduri 
-  ​* 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) +- Protocol: I2C (Inter-Integrated Circuit) 
-  * diagrame de semnal ​ + 
-  * rezultatele simulării+- 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 56: 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 66: 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.1748099209.txt.gz · Last modified: 2025/05/24 18:06 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