Differences

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

Link to this comparison view

pm:prj2025:fstancu:maria.popescu0411 [2025/05/27 22:24]
maria.popescu0411 [Algoritmi și structuri implementate]
pm:prj2025:fstancu:maria.popescu0411 [2025/05/30 00:52] (current)
maria.popescu0411 [Lista de componente]
Line 201: Line 201:
 {{:​pm:​prj2025:​fstancu:​breadboard1.jpg?​300|}} {{:​pm:​prj2025:​fstancu:​breadboard2.jpg?​300|}} {{:​pm:​prj2025:​fstancu:​breadboard1.jpg?​300|}} {{:​pm:​prj2025:​fstancu:​breadboard2.jpg?​300|}}
  
 +{{ :​pm:​prj2025:​fstancu:​carcasa.jpg?​nolink&​300 |}}
  
 ===== Software Design ===== ===== Software Design =====
Line 239: Line 239:
 ==== Funcții importante implementate în cod ==== ==== Funcții importante implementate în cod ====
  
-  * `setup()` ​– configurează pinii, initializează LCD-ul, încarcă modul salvat din EEPROM și pregătește ​toate componentele pentru execuția logicii principale. +^ Funcție ​            ^ Descriere ​                                                                                                     ^ 
-   +`setup()` ​          | Configurează pinii, initializează LCD-ul, încarcă modul salvat din EEPROM și pregătește componentele pentru execuția logicii principale. ​| 
-  * `loop()` ​– gestionează selecția modului de joc, pornirea și desfășurarea partidei, schimbarea turelor, decrementarea timpului și actualizarea afișajelor. Toate aceste operații ​sunt controlate ​prin logica unui state machine simplificat. +`loop()` ​           | Gestionează selecția modului de joc, desfășurarea partidei, schimbarea turelor, decrementarea timpului și actualizarea afișajelor. Toate sunt controlate ​de un state machine simplificat. ​| 
-   +`updateDisplay(...)`| Actualizează valorile de timp pe afișajul 7 segmente ​prin multiplexareActivează fiecare cifră pe rând cu un delay scurt pentru a simula refresh ​continuu| 
-  * `updateDisplay(...)` ​– actualizează valorile de timp pe fiecare ​afișaj de tip 7 segmente. ​Afișarea se face manual, prin activarea fiecărei cifre pe rândcu un delay scurtpentru a simula ​un refresh ​constant și a menține toate cifrele vizibile+`showDigit(...)` ​   | Afișează o cifră pe una dintre cele patru poziții ale unui afișaj. ​Activează doar segmentele ​necesare| 
- +`playSwitchBeep()` ​ | Redă un sunet scurt prin buzzer ​la schimbarea de tură. ​| 
-  * `showDigit(...)` ​– afișează o anumită ​cifră pe una dintre cele patru poziții ale unui afișaj. ​Funcția activează doar segmentele ​corespunzătoare cifrei dorite+`playAlarm()` ​      | Declanșează o secvență sonoră repetitivă când timpul unui jucător a expirat. ​|
-   +
-  * `playSwitchBeep()` ​– redă un sunet scurt prin buzzer ​pentru a marca schimbarea de tură. +
-   +
-  * `playAlarm()` ​– declanșează o secvență sonoră repetitivă când timpul unui jucător a expirat.+
  
 ==== Utilizarea memoriei EEPROM ==== ==== Utilizarea memoriei EEPROM ====
Line 259: Line 255:
   * După selectarea unui mod nou, valoarea este salvată cu `EEPROM.update(0,​ currentMode)` pentru a evita uzura memoriei EEPROM.   * După selectarea unui mod nou, valoarea este salvată cu `EEPROM.update(0,​ currentMode)` pentru a evita uzura memoriei EEPROM.
  
-Această funcționalitate crește nivelul de interactivitate și profesionalism al proiectului. 
- 
-==== Îmbunătățiri posibile ==== 
- 
-  * **Adăugarea unui increment de timp (ex: +2s)** la fiecare mutare, ca în modurile Fischer utilizate în turneele oficiale. 
-  ​ 
-  * **Afișarea scorului anterior** – citirea timpilor rămași din ultimul joc salvați în EEPROM și afișarea lor la pornire. 
-  ​ 
-  * **LED-uri pentru jucătorul activ** – utilizatorul poate vedea clar cine are tura fără a privi LCD-ul. 
-  ​ 
-  * **Interfață serială** – trimiterea de informații prin Serial Monitor pentru debugging sau loguri automate. 
-  ​ 
-  * **Mod de test hardware** – activat la pornire prin apăsarea simultană a două butoane, aprinde toate segmentele, LCD-ul și buzzerul pentru verificare vizuală/​sonoră. 
  
 +==== Cod sursă ====
  
 +Codul complet al aplicației poate fi consultat în repository-ul public de pe GitHub:
 +https://​github.com/​biancapopescu0411/​arduino-digital-chess-clock
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip+<html
-Care au fost rezultatele obţinute în urma realizării ​proiectului ​vostru+Acesta este un video demonstrativ cu functionalitatea ​proiectului
-</note>+<iframe width="​560"​ height="​315"​ src="​https://​youtube.com/​embed/​BtILUhTNpQM"​ 
 +frameborder="​0"​ allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture"​  
 +allowfullscreen></​iframe>​ 
 +</html>
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Proiectul realizat este un ceas digital de sah complet functional, care permite selectarea modului de joc, afisarea timpului pentru fiecare jucator si semnalizarea sonora in momentele importante. Am folosit un LCD pentru interfata cu utilizatorul,​ doua afisaje cu 7 segmente pentru a afisa timpii si mai multe butoane pentru interactiune directa. 
 + 
 +Pe parcursul implementarii am aplicat notiuni invatate la mai multe laboratoare,​ cum ar fi lucrul cu afisaje digitale, butoane, semnalizare cu buzzer si salvarea datelor in EEPROM. Proiectul a fost o ocazie buna de a pune in practica teoria si de a intelege mai bine cum functioneaza un sistem embedded complet.
  
-<note warning>​ +Am facut inclusiv lucru manual, construind si o carcasa pentru a proteja componentele si pentru a oferi un aspect ​mai profesional. Pe viitoras putea adauga si alte functiicum ar fi increment ​de timp sau salvarea scorurilor.
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surseschemeetc. 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**. +In final, proiectul mi-a oferit o experienta completa si m-a ajutat sa inteleg mai bine ce inseamna sa construiesti un dispozitiv electronic real, de la idee pana la testare.
-</​note>​+
  
-===== Jurnal ===== 
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2025/fstancu/maria.popescu0411.1748373899.txt.gz · Last modified: 2025/05/27 22:24 by maria.popescu0411
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