This is an old revision of the document!
Proiectul implementează un ceas de șah digital folosind Arduino, afișaje cu 7 segmente și un LCD. Ceasul oferă funcționalități standard pentru turneele de șah:
Ideea a pornit de la dorința de a crea un instrument practic pentru jucătorii de șah, care să fie în același timp un exercițiu educațional de programare și electronică. Utilitatea acestui proiect constă în:
Ceasul de șah digital este un sistem complex care îmbină componente hardware și software pentru a oferi o soluție funcțională și intuitivă de cronometrare pentru jocul de șah. Proiectul utilizează o singură placă Arduino MEGA 2560 pentru a controla toate componentele și a implementa logica necesară.
Arduino MEGA 2560 reprezintă “creierul” sistemului, coordonând toate funcționalitățile și procesând interacțiunile utilizatorului. Acesta a fost ales datorită numărului mare de pini I/O disponibili (54 pini digitali și 16 pini analogici), care permit conectarea simultană a tuturor componentelor necesare. Arduino rulează firmware-ul care implementează logica jocului, gestionează timerii, procesează input-ul de la butoane și controlează afișajele și feedback-ul audio.
LCD-ul oferă o interfață vizuală pentru utilizator, afișând informații despre:
Cele două afișaje cu 7 segmente și 4 digiti sunt utilizate pentru a afișa timpul rămas pentru fiecare jucător în format MM:SS (minute:secunde). Aceste afișaje utilizează tehnica de multiplexare pentru a controla toate cele 32 de segmente (8 segmente × 4 digiti) cu doar 12 pini pentru fiecare afișaj. Multiplexarea implică activarea rapidă și secvențială a câte unui digit la un moment dat, creând iluzia că toate sunt aprinse simultan datorită persistenței vizuale.
Sistemul include patru butoane tactile:
Butoanele sunt conectate la Arduino folosind intrările analogice și utilizează rezistențe pull-up interne pentru stabilitate.
Buzzer-ul oferă feedback audio pentru diverse evenimente din timpul jocului:
Modulele interacționează într-un flux logic care permite funcționarea coerentă a ceasului de șah:
La pornire, sistemul afișează meniul principal pe LCD, permițând utilizatorului să selecteze modul de joc folosind butoanele de control. După selectarea modului, timpii inițiali sunt setați pentru ambii jucători și afișați pe cele două afișaje cu 7 segmente. Jocul începe cu cronometrul jucătorului 1 activat. Când acesta termină mutarea și apasă butonul său, timpul său se oprește și începe cronometrul jucătorului 2. Buzzer-ul emite sunete pentru a indica transferul de control între jucători și pentru a avertiza când timpul este pe cale să expire. Arduino MEGA gestionează continuu afișajele, actualizându-le pentru a reflecta timpul rămas, și procesează input-ul de la butoane pentru a detecta schimbările de stare (pauză, terminare mutare, etc.). LCD-ul afișează informații suplimentare despre starea jocului, cum ar fi jucătorul activ, modul de joc curent, și eventuale notificări.
Această arhitectură modulară permite o implementare clară a funcționalităților și facilitează eventuale extinderi ulterioare ale sistemului, cum ar fi adăugarea de moduri de joc suplimentare sau funcții avansate de cronometrare.
Pentru reglarea contrastului LCD-ului
Schema electrică LCD 16×2:
RS (Register Select) → Arduino pin 12 E (Enable) → Arduino pin 11 D4 → Arduino pin 5 D5 → Arduino pin 4 D6 → Arduino pin 3 D7 → Arduino pin 2 VSS → GND VDD → 5V V0 → Mijlocul potențiometrului de 10K Pinii extremi ai potențiometrului: unul la 5V, celălalt la GND RW → GND (mod scriere) Backlight (A) → 5V (prin rezistență dacă este necesar) Backlight (K) → GND
Afișaj cu 7 segmente pentru Jucătorul 1 (anod comun):
Segment A → Arduino pin 22 (prin rezistență 220 ohm) Segment B → Arduino pin 24 (prin rezistență 220 ohm) Segment C → Arduino pin 26 (prin rezistență 220 ohm) Segment D → Arduino pin 28 (prin rezistență 220 ohm) Segment E → Arduino pin 30 (prin rezistență 220 ohm) Segment F → Arduino pin 32 (prin rezistență 220 ohm) Segment G → Arduino pin 34 (prin rezistență 220 ohm) Segment DP → Arduino pin 36 (prin rezistență 220 ohm) Digit 1 (anod) → Arduino pin 38 Digit 2 (anod) → Arduino pin 40 Digit 3 (anod) → Arduino pin 42 Digit 4 (anod) → Arduino pin 44
Afișaj cu 7 segmente pentru Jucătorul 2 (anod comun):
Segment A → Arduino pin 23 (prin rezistență 220 ohm) Segment B → Arduino pin 25 (prin rezistență 220 ohm) Segment C → Arduino pin 27 (prin rezistență 220 ohm) Segment D → Arduino pin 29 (prin rezistență 220 ohm) Segment E → Arduino pin 31 (prin rezistență 220 ohm) Segment F → Arduino pin 33 (prin rezistență 220 ohm) Segment G → Arduino pin 35 (prin rezistență 220 ohm) Segment DP → Arduino pin 37 (prin rezistență 220 ohm) Digit 1 (anod) → Arduino pin 39 Digit 2 (anod) → Arduino pin 41 Digit 3 (anod) → Arduino pin 43 Digit 4 (anod) → Arduino pin 45
Butoane:
Buton Jucător 1:
Un pin → Arduino pin A0 Alt pin (diagonal) → GND Rezistență 10K între A0 și 5V (pull-up intern activat)
Buton Jucător 2:
Un pin → Arduino pin A1 Alt pin (diagonal) → GND Rezistență 10K între A1 și 5V (pull-up intern activat)
Buton Navigare Mod:
Un pin → Arduino pin A2 Alt pin (diagonal) → GND Rezistență 10K între A2 și 5V (pull-up intern activat)
Buton Selectare Mod:
Un pin → Arduino pin A3 Alt pin (diagonal) → GND Rezistență 10K între A3 și 5V (pull-up intern activat)
Buzzer:
Pin pozitiv (+) → Arduino pin 8 (PWM) Pin negativ (-) → GND
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.