This is an old revision of the document!


Codificator/Decodificator Cod Morse

Introducere

Prezentarea pe scurt a proiectului vostru:

  • Proiectul constă într-un sistem care, în funcție de regimul ales, poate fie să convertească semnale introduse de la tastatură în cod Morse și să le transmită prin semnale sonore și vizuale, fie să recepționeze semnale în cod Morse (prin microfon sau buton) și să le decodeze, afișând literele corespunzătoare pe un ecran LCD.
  • Scopul proiectului este de a crea un instrument educativ și funcțional care să faciliteze învățarea și utilizarea codului Morse, oferind codificare și decodificare automată a mesajelor.
  • Am pornit de la ideea de a explora comunicația non-verbală și a învăța bazele codului Morse.
  • Proiectul poate fi util pentru noi ca să învățăm să integrăm senzori și concepte software într-un sistem complex.Pentru alții, acesta poate fi folosit în scop educativ, la fel și ca metodă alternativă de comunicare.

Descriere generală

Hardware Design

Aici puneţi tot ce ţine de hardware design:

Software Design

Mediu de dezvoltare: Arduino IDE

Librarii: LiquidCrystal_I2C.h

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, 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

Rezultate Obţinute

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

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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ă ;-).

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.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

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