Differences

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

Link to this comparison view

pm:prj2025:rnedelcu:artiom.pujleacov [2025/05/28 14:16]
artiom.pujleacov [Software Design]
pm:prj2025:rnedelcu:artiom.pujleacov [2025/05/30 12:44] (current)
artiom.pujleacov [Download]
Line 41: Line 41:
  
  
-<note tip> +<note tip> Mediu de dezvoltare: Arduino IDE Librării utilizate: LiquidCrystal_I2C.h 
-Mediu de dezvoltare: Arduino IDE+Structuri și algoritmi implementați:​
  
-Librarii: LiquidCrystal_I2C.h+Codarea și decodarea codului Morse prin detectarea sunetului de la un microfon analogic
  
 +Algoritm de detecție frecvență prin măsurarea trecerilor prin zero pentru identificarea semnalelor valide
  
-Structuri si algoritmi:+Temporizare non-blocantă folosind millis() pentru diferențierea semnalelor Morse (punct, linie, spațiu literă, spațiu cuvânt)
  
-State machine cu stari: diffSelect, gameOver, selectMode pentru controlul fluxului ​de executie+Debouncing software și praguri ​de intensitate pentru filtrarea zgomotului și recunoașterea corectă a impulsurilor sonore
  
-Timer non-blocking bazat pe millis() pentru countdown-ul in timp real+Tabel static cu codurile Morse pentru litere ​(A-Zși cifre (0-9)
  
-Debouncing software cu interval de 300ms pentru ​stabilitatea butoanelor si prevenirea apasarilor multiple+Algoritmi ​pentru ​generarea semnalului sonor (beep-uri) pentru punct și linie folosind tone() și PWM pe buzzer
  
-Algoritm de construire progresiva a numarului (cifra cu cifra) adaptat pe dificultate:​+Interfață LCD 16x2 pentru afișarea codului Morse recepționat și transmis
  
-Easy (1-10): doar unitati+Funcționalitate UART simplă pentru transmiterea și primirea textului
  
-Medium ​(1-100): zeci + unitati+Detectare și afișare mesaje speciale ​(SOS, HELP) cu mod de alertă sonoră și vizuală (LED-uri)
  
-Hard (1-1000): sute + zeci + unitati+Gestionare buffer și poziționare cursor pentru afișarea pe LCD cu împărțirea pe linii și resetarea textului
  
 +Funcții principale implementate:​
  
-Generator aleator pentru randomizare cu randomSeed+setup() – inițializează LCD, buzzer, microfon, porturi și UART
  
-Sistem ​de feedback audio adaptat cu frecvente variabile bazate pe proximitatea ghicirii+loop() – buclă principală ce gestionează cele două moduri ​de operare (codare și decodare Morse)
  
-PWM si tone() pentru controlul buzzer-ului si generarea tonurilor+detectFrequency() – măsoară frecvența semnalului audio de la microfon
  
-Algoritm de verificare cu feedback directional ​(prea mic/prea mare)+flashSequence() – generează secvența de semnale sonore corespunzătoare unui cod Morse
  
-Sistem de proximitate inteligent cu praguri adaptive in functie de dificultate+playFrequency() – redă sunet pe buzzer la o frecvență dată și durată specifică
  
-Functii implementate:​+gestionare buffer cod Morse și decodare literă prin compararea secvenței de puncte și linii
  
-setup() – initializare hardware si configurare pin-uri+afisare pe LCD și control cursor pentru o vizualizare clară a textului primit sau transmis
  
-loop() – bucla principala ​cu gestionarea starilor +mod alertă ​cu tonuri și LED-uri pentru ​mesaje speciale
- +
-handleDiffSelect() – gestioneaza selectia si confirmarea nivelului de dificultate +
- +
-initGame() – seteaza parametrii specifici dificultatii (limite, timp, pozitii 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>​
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +<note tip> Proiectul ​funcționează corect atât pentru codarea cât și decodarea mesajelor Morse cu sunetoferind feedback vizual și sonor.
-Proiectul și-a atins toate obiectivelecreând un joc fara probleme +
- +
- +
- +
 Limitări identificate:​ Limitări identificate:​
  
--Lipsa persistenței datelor la restart (scoruristatistici)+Sensibilitatea microfonului și pragurile de detecție pot fi afectate de zgomotul ambientalducând la erori de interpretare
  
--Feedback audio limitat la un singur buzzer (monoton)+Afișajul LCD 16x2 limitează cantitatea de text afișată simultan
  
--Interface fixă fără personalizare pentru utilizatori+Lipsa funcțiilor de editare sau ștergere a textului introdus
  
--Dependența de alimentarea externă (fără baterie)+Necesitatea calibrării pragurilor pentru semnale lungi și spații precise între semnale
  
 +Posibile îmbunătățiri:​
  
-Ce mai poate fi adaugat:+Implementarea unui mod automat de calibrare a pragurilor de sunet pentru o detecție ​mai robustă
  
--LED RGB pentru efecte vizuale mai complexe ​în loc de LED-urile simple+Stocarea mesajelor ​în memorie EEPROM pentru salvare și recuperare
  
--Card SD pentru ​salvarea scorurilor ​și statisticilor de joc+Utilizarea unui afișaj mai mare (ex: OLED) pentru ​afișarea textului complet
  
--Mod Multiplayer - doi jucători alternează+Indicator vizual suplimentar (LED sincronizat cu sunetul) pentru feedback în timp real
  
--Mod Sprint - ghicește cât mai multe numere în timp limitat+Adăugarea unei interfețe Bluetooth pentru transmiterea ​și recepția Morse pe dispozitive mobile
  
 </​note>​ </​note>​
- 
-===== Rezultate Obţinute ===== 
- 
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
- 
 ===== Concluzii ===== ===== Concluzii =====
  
 ===== Download ===== ===== Download =====
  
-<​note ​warning+<​note>​ 
-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ă ;-). +{{:pm:prj2025:rnedelcu:cod_morse.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/artiom.pujleacov.1748430980.txt.gz · Last modified: 2025/05/28 14:16 by artiom.pujleacov
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