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:23]
catalin.aldobritei [Hardware Design]
pm:prj2025:rnedelcu:catalin.aldobritei [2025/05/28 12:38] (current)
catalin.aldobritei [Software Design]
Line 40: Line 40:
  
 1. Microcontroller Arduino 1. Microcontroller Arduino
 +
 - Model: Arduino UNO (ATmega328P) - Model: Arduino UNO (ATmega328P)
 +
 - Tensiune operare: 5V - Tensiune operare: 5V
 +
 - Memorie: 32KB Flash, 2KB SRAM, 1KB EEPROM - Memorie: 32KB Flash, 2KB SRAM, 1KB EEPROM
  
 2. Display LCD I2C (16x2) 2. Display LCD I2C (16x2)
 +
 - Specificații:​ 16 coloane × 2 rânduri - Specificații:​ 16 coloane × 2 rânduri
 +
 - Protocol: I2C (Inter-Integrated Circuit) - Protocol: I2C (Inter-Integrated Circuit)
 +
 - Tensiune: 5V - Tensiune: 5V
 +
 - Pini conectați: - Pini conectați:
   - SDA → A4   - SDA → A4
Line 55: Line 62:
  
 3. LED-uri Indicator 3. LED-uri Indicator
 +
 LED Verde (Succes) LED Verde (Succes)
 +
 - Pin Arduino: 4 - Pin Arduino: 4
 +
 LED Roșu (Eroare/​Timp Expirat) LED Roșu (Eroare/​Timp Expirat)
 +
 - Pin Arduino: 5 - Pin Arduino: 5
  
 4. Butoane de Control 4. Butoane de Control
 +
 Buton Selecție Buton Selecție
 +
 - Pin Arduino: 2 - Pin Arduino: 2
 +
 Buton Confirmare Buton Confirmare
 +
 - Pin Arduino: 3 - Pin Arduino: 3
  
 5. Buzzer Audio 5. Buzzer Audio
 +
 - Pin Arduino: A0 - Pin Arduino: A0
 +
 - Tip: Buzzer pasiv - Tip: Buzzer pasiv
 +
 - Tensiune: 5V - Tensiune: 5V
 +
 - Control: functia `tone()` - Control: functia `tone()`
  
Line 83: 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 93: 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.1748100188.txt.gz · Last modified: 2025/05/24 18:23 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