This shows you the differences between two versions of the page.
|
pm:prj2026:bianca.popa1106:david.gherghe [2026/05/05 17:30] david.gherghe |
pm:prj2026:bianca.popa1106:david.gherghe [2026/05/24 12:35] (current) david.gherghe |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Ceas pentru jocuri in 2 jucatori (Sah/Table) ====== | ====== Ceas pentru jocuri in 2 jucatori (Sah/Table) ====== | ||
| + | |||
| + | Autor: Gherghe David, grupa 332CA | ||
| ===== Introducere ===== | ===== Introducere ===== | ||
| Line 29: | Line 31: | ||
| Buzzerul este controlat printr-un pin digital/PWM. El ramane oprit in timpul functionarii normale si este activat doar in momentul in care unul dintre jucatori ajunge la 00:00. In acel moment, microcontrollerul trece jocul intr-o stare de timeout, opreste scaderea timpului, face ecranul sa clipeasca la interval de o secunda si activeaza buzzerul pana cand utilizatorul apasa butonul START/PAUSE. | Buzzerul este controlat printr-un pin digital/PWM. El ramane oprit in timpul functionarii normale si este activat doar in momentul in care unul dintre jucatori ajunge la 00:00. In acel moment, microcontrollerul trece jocul intr-o stare de timeout, opreste scaderea timpului, face ecranul sa clipeasca la interval de o secunda si activeaza buzzerul pana cand utilizatorul apasa butonul START/PAUSE. | ||
| - | {{:pm:prj2026:bianca.popa1106:schema_proiect.png?700|}} | + | {{:pm:prj2026:bianca.popa1106:schema_proiect.png?600|}} |
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| Line 49: | Line 51: | ||
| * Cablu micro-USB pentru alimentare | * Cablu micro-USB pentru alimentare | ||
| - | !!! TODO: De adaugat schema electrica | + | {{:pm:prj2026:bianca.popa1106:circuit_digital.png?600|}} |
| ===== Software Design ===== | ===== Software Design ===== | ||
| Line 94: | Line 96: | ||
| Schimbarea turei se face prin butoanele dedicate jucatorilor. Daca este randul albului, doar butonul albului este acceptat. Cand albul apasa butonul, timpul lui primeste incrementul selectat, apoi incepe sa scada timpul negrului. In mod similar, cand este randul negrului, apasarea butonului negrului adauga incrementul la timpul negrului si porneste timpul albului. | Schimbarea turei se face prin butoanele dedicate jucatorilor. Daca este randul albului, doar butonul albului este acceptat. Cand albul apasa butonul, timpul lui primeste incrementul selectat, apoi incepe sa scada timpul negrului. In mod similar, cand este randul negrului, apasarea butonului negrului adauga incrementul la timpul negrului si porneste timpul albului. | ||
| - | Pentru butonul START/PAUSE am implementat doua tipuri de apasare: apasare scurta, apasare lunga | + | Pentru butonul START/PAUSE am implementat doua |
| + | Documentatia oficiala ATMega328P XPlained Mini tipuri de apasare: apasare scurta, apasare lunga | ||
| Apasarea scurta este folosita pentru pornirea jocului, pauza si revenirea din pauza. Dupa timeout, aceeasi apasare scurta opreste buzzerul si intoarce sistemul in meniul de selectie. Apasarea lunga, de aproximativ 10 secunde, este folosita pentru resetarea jocului in timpul meciului si revenirea la meniul initial. | Apasarea scurta este folosita pentru pornirea jocului, pauza si revenirea din pauza. Dupa timeout, aceeasi apasare scurta opreste buzzerul si intoarce sistemul in meniul de selectie. Apasarea lunga, de aproximativ 10 secunde, este folosita pentru resetarea jocului in timpul meciului si revenirea la meniul initial. | ||
| In cazul in care timpul unui jucator ajunge la zero, programul intra intr-o stare de timeout. In aceasta stare, timpul nu mai scade, buzzerul este activat, iar ecranul clipeste la interval de o secunda. Sistemul ramane in aceasta stare pana cand utilizatorul apasa butonul START/PAUSE. | In cazul in care timpul unui jucator ajunge la zero, programul intra intr-o stare de timeout. In aceasta stare, timpul nu mai scade, buzzerul este activat, iar ecranul clipeste la interval de o secunda. Sistemul ramane in aceasta stare pana cand utilizatorul apasa butonul START/PAUSE. | ||
| + | |||
| + | ===== Rezultate ===== | ||
| + | |||
| + | Pe parcursul dezvoltarii au fost testate separat toate modulele: display-urile OLED, potentiometrul, butoanele si buzzerul. O problema intalnita a fost folosirea a doua display-uri I2C. Initial, ambele aveau aceeasi adresa, ceea ce nu permitea controlul separat. Problema a fost rezolvata prin folosirea a doua display-uri cu adrese diferite, 0x3C si 0x3D. | ||
| + | |||
| + | Proiectul indeplineste functionalitatile propuse initial si poate fi folosit ca un ceas de sah simplu. Ca imbunatatiri viitoare, se pot adauga o carcasa dedicata, butoane mai mari, mai multe preseturi de timp, un mod custom pentru alegerea timpului si afisarea zecimilor de secunda in ultimele secunde ale jocului. | ||
| + | |||
| + | Functionalitatea finala a proiectului se poate vedea in [[https://github.com/DavidGhe1026/Proiect-PM-2026|repo-ul de pe Github]] si pe [[https://youtube.com/shorts/IRNI6G7SHYs?feature=share|Youtube]]. | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| - | [[ | + | * [[https://ww1.microchip.com/downloads/en/DeviceDoc/50002659A.pdf|Documentatia oficiala ATMega328P XPlained Mini]] |
| - | Documentatia oficiala ATMega328P XPlained Mini]]https://ww1.microchip.com/downloads/en/DeviceDoc/50002659A.pdf | + | * SigmaNortec: Display OLED 0.96 inch I2C SSD1306 |
| + | * SigmaNortec: Modul Buzzer Pasiv | ||
| + | * SigmaNortec: Modul Potentiometru Rotativ RV09 | ||