This is an old revision of the document!


Digital Chess Clock - Popescu Maria Bianca

Introducere

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:

  • Cronometrează timpul fiecărui jucător
  • Permite setarea diferitelor moduri de joc (Blitz, Rapid, Clasic)
  • Oferă feedback sonor pentru acțiunile jucătorilor
  • Permite pauză/reluare a timpului

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:

  • Economisirea costurilor comparativ cu ceasurile de șah comerciale
  • Personalizarea funcționalităților conform nevoilor specifice
  • Înțelegerea principiilor de programare și electronică în contextul unui sistem embedded funcțional

Descriere generală

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

Descrierea modulelor și interacțiunilor

1. Unitatea centrală de procesare (Arduino MEGA 2560)

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.

2. Modulul de afișare a informațiilor (LCD 16x2)

LCD-ul oferă o interfață vizuală pentru utilizator, afișând informații despre:

  • Meniul de selectare a modurilor de joc (Blitz, Rapid, Clasic)
  • Starea curentă a jocului (în desfășurare, pauză, terminat)
  • Instrucțiuni pentru utilizator
3. Module de cronometrare (Afișaje cu 7 segmente)

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.

4. Modulul de interacțiune cu utilizatorul (Butoane)

Sistemul include patru butoane tactile:

  • Două butoane pentru jucători: Fiecare jucător apasă butonul său când termină mutarea, transferând timpul la adversar
  • Două butoane pentru control: Un buton pentru navigarea prin opțiuni și un buton pentru confirmarea selecției, utilizate în principal pentru configurarea modurilor de joc

Butoanele sunt conectate la Arduino folosind intrările analogice și utilizează rezistențe pull-up interne pentru stabilitate.

5. Modulul de feedback audio (Buzzer)

Buzzer-ul oferă feedback audio pentru diverse evenimente din timpul jocului:

  • Confirmarea apăsării butoanelor
  • Alerte pentru timpul scăzut rămas
  • Semnale pentru începerea/terminarea jocului

Interacțiunea dintre module

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.

Hardware Design

=== Lista de componente ===

== 1 x Arduino MEGA 2560 ==

Tensiune de operare: 5V Curent per pin I/O: 20mA (maxim) Frecvență: 16 MHz 54 pini digitali I/O (15 PWM) 16 intrări analogice

1 x LCD 16×2 cu interfață HD44780

Tensiune de operare: 5V Curent consumat: ~1mA (fără backlight) Interfață: paralel 4-bit

2 x Afișaj cu 7 segmente cu 4 digiti (anod comun)

Tensiune de operare: 5V Curent per segment: ~20mA Configurație: Anod comun

4 x Butoane tactile momentane (pushbutton)

Configurație: Normally open (NO) 4 pini (2 perechi conectate intern când sunt apăsate)

1 x Buzzer piezoelectric

Tensiune de operare: 5V Frecvență: 2-5 kHz (tonuri optime)

1 x Potențiometru 10K

Pentru reglarea contrastului LCD-ului

Rezistențe:

4 x Rezistențe 10K ohm (pentru pull-up la butoane) 16 x Rezistențe 220 ohm (pentru limitarea curentului la segmentele afișajelor)

Componente de interconectare:

2 x Breadboard 830 puncte Fire de conexiune (jumperwires) diverse lungimi

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

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

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/fstancu/maria.popescu0411.1747615382.txt.gz · Last modified: 2025/05/19 03:43 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