Differences

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

Link to this comparison view

pm:prj2025:rnedelcu:catalin.aldobritei [2025/05/13 10:17]
catalin.aldobritei [Hardware Design]
pm:prj2025:rnedelcu:catalin.aldobritei [2025/05/28 12:38] (current)
catalin.aldobritei [Software Design]
Line 3: Line 3:
  
 <note tip> <note tip>
-Prezentarea pe scurt proiectului vostru: +Am creat un joc cu Arduino care îți permite să ghicești numere. Ai un ecran care îți arată informațiile,​ două butoane pentru ​juca, LED-uri care se aprind în diferite culori și un buzzer care face sunete
-Jocul consta in ghicirea unui numar ales aleator avand timp limitat si diferite hint-uri afisate pe LCD. Acesta are mai multe dificultati si de mod multi player ​care va face jocul mai interesant+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). 
-Scopul proiectului este de a crea o experienta ​de joc interactiva. +Buzzer-ul face sunete diferite să îți arate cât de aproape ești. Dacă ești foarte aproapesunetele sunt rapide și înalte. Dacă ești departe, sunetele sunt lente și joase. 
-Ideea de baza a pornit ​de la jocul clasic "​Higher/​Lower"​dar a fost extinsa ​pentru ​a include mai multe caracteristici si provocari+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>​ </​note>​
Line 12: Line 12:
  
 <note tip> <note tip>
-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ă.+schema ​bloc:
  
-Exemplu de schemă blochttp://​www.robs-projects.com/​mp3proj/​newplayer.html+{{:pm:prj2025:​rnedelcu:​schema_bloc_aldobritei_catalin.png?200|}}
  
-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.+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 22: Line 37:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> +Componente Hardware: 
-Aici puneţtot ce ţine de hardware design+ 
-  ​* listă de piese +1. Microcontroller Arduino 
-  ​* 3 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 40: 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 50: 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.1747120638.txt.gz · Last modified: 2025/05/13 10:17 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