This shows you the differences between two versions of the page.
|
pm:prj2026:bianca.popa1106:david.gherghe [2026/05/05 12:32] david.gherghe created |
pm:prj2026:bianca.popa1106:david.gherghe [2026/05/05 13:01] (current) david.gherghe |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Chess tournament clock ====== | + | ====== Ceas pentru jocuri in 2 jucatori (Sah/Table) ====== |
| + | |||
| + | ===== Introducere ===== | ||
| + | |||
| + | Acest proiect este un ceas pentru meciuri de sah (sau pentru orice joc care presupune alternarea turelor a 2 jucatori) realizat pe placa ATmega328P Xplained Mini. Acesta permite setarea unui timp pentru ambii jucatori folosind un potentiometru, pornirea jocului cu un buton dedicat, schimbarea turei intre cei doi jucatori cu doua butoane separate si semnalizarea pierderii la timp printr-un buzzer si prin afisajul OLED. | ||
| + | |||
| + | Ceasul permite alegerea mai multor optiuni de timp, printre care si optiuni de timp cu increment (dupa finalizarea unei ture, jucatorul ce apasa butonul va primi un numar de secunde in plus la timpul sau), cum ar fi: | ||
| + | |||
| + | * 1 minut + 0 secunde increment | ||
| + | * 3 minute + 2 secunde increment | ||
| + | * 10 minute + 3 secunde increment | ||
| + | * 15 minute + 10 secunde increment | ||
| + | * 60 minute + 30 secunde increment | ||
| + | |||
| + | Ideea de la care am pornit a fost dorinta de a face un proiect legat de sah pe care sa il pot folosi in propriile meciuri, iar scopul proiectului este sa simuleze functionalitatea unui ceas real de sah, folosit in competitii, dar intr-o forma simpla si usor de implementat pe microcontroller. | ||
| + | |||
| + | ===== Descriere generala ===== | ||
| + | |||
| + | Proiectul este construit in jurul placii ATmega328P Xplained Mini, care are rolul de unitate centrala de control si citeste datele de intrare de la utilizator, calculeaza timpul ramas pentru fiecare jucator si controleaza elementele de iesire, adica afisajul OLED si buzzerul. | ||
| + | |||
| + | ATmega328P primeste alimentare la 5V prin USB. Aceeasi sursa de alimentare este folosita si pentru modulele externe conectate la proiect. Pentru alegerea timpului de joc este folosit un potentiometru conectat la un pin analogic al placii. Microcontrollerul citeste valoarea analogica prin ADC si o transforma intr-unul dintre cele cinci preseturi disponibile. In functie de pozitia potentiometrului, pe ecran este afisat controlul de timp selectat, de exemplu 3+2, 10+3 sau 15+10. Dupa alegerea presetului, utilizatorul apasa butonul START/PAUSE pentru a porni meciul. | ||
| + | |||
| + | Cele trei butoane sunt conectate la pini digitali ai placii si sunt citite folosind rezistentele interne de pull-up. Butonul albului si butonul negrului controleaza schimbarea turei. Atunci cand este randul unui jucator si acesta apasa butonul sau, microcontrollerul adauga incrementul corespunzator la timpul acelui jucator si porneste scaderea timpului adversarului. Astfel, placa mentine permanent starea curenta a jocului: randul albului, randul negrului, pauza sau timeout. | ||
| + | |||
| + | Butonul START/PAUSE are mai multe roluri in functie de starea proiectului. In meniul de selectie porneste jocul. In timpul meciului, o apasare scurta pune ceasul pe pauza sau il reporneste. Daca butonul este tinut apasat timp de 10 secunde, jocul este resetat si sistemul revine la meniul de alegere a timpului. Dupa ce un jucator pierde la timp, acelasi buton opreste semnalizarea si readuce proiectul in meniul initial. | ||
| + | |||
| + | Afisajul OLED comunica cu placa prin interfata I2C, folosind liniile SDA si SCL. Microcontrollerul trimite catre display informatii despre timpul ramas pentru fiecare jucator, incrementul selectat si starea curenta a jocului. Pe durata meciului, ecranul afiseaza cei doi timpi separati printr-o linie, iar un indicator arata al cui timp scade. Cand jocul este pus pe pauza, pe ecran apare mesajul "Paused". | ||
| + | |||
| + | 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|}} | ||
| + | |||
| + | ===== Hardware Design ===== | ||
| + | |||
| + | Lista de piese folosite: | ||
| + | |||
| + | * ATmega328P Xplained Mini | ||
| + | * Display OLED SSD1306 0.96 inch, I2C | ||
| + | * Modul potentiometru rotativ RV09 | ||
| + | * 3 butoane fara retinere | ||
| + | * Modul buzzer pasiv | ||
| + | * Breadboard | ||
| + | * Placa de prototipare 7x9 cm | ||
| + | * Fire jumper tata-tata / mama-tata / mama-mama | ||
| + | * Bare pini tata 2.54 mm | ||
| + | * Rezistente 10kΩ | ||
| + | * Rezistente 4.7kΩ | ||
| + | * Condensatoare 100nF | ||
| + | * Cablu micro-USB pentru alimentare | ||
| + | |||