Chess Timer

Autor: Blanaru Andy-Ștefan - 332CB

Email: andy_stefan.blanaru@stud.acs.pub.ro

Introducere

Descriere

Tema proiectului o constituie realizarea unui Chess Timer. Proiectul are la bază două 4-digit 7-segment ce vor afișa timpii pe care îi are fiecare player de a muta piesele, în cadrul unui joc de sah. Encoderul rotativ are rolul de a seta timpul de inceput de joc al fiecarui player. Acesta are un push button, care odată apăsat, resetează timpii de joc ai jucătorilor la ultimele valori setate de către acesta. În momentul în care un player își apasă propriul buton, înseamnă că acesta a terminat de mutat piesa. Timpul său va stagna, pe când timpul celuilalt jucător se scurge, până va termina de mutat și acesta. Buzzerul va emite sunete atunci când butoanele sunt apăsate, când timpii sunt resetați, la orice apăsare a encoderului rotativ sau atunci când expiră timpul de joc al unui player.

Scopul proiectului

Scopul acestui proiect este de a indica fiecarui jucator cat timp are la dispozitie pentru a putea efectua mutarile pieselor pe parcursul unui joc de sah.

Descriere generală

Schema bloc

Hardware Design

Listă de componente:

Nume Numar piese
Arduino UNO 1
Butoane 2
Buzzer 1
4-digit 7-segment 2
Fire 23
Breadboard 2
Encoder rotativ 1

Software Design

Partea de Software Design a fost realizată in Arduino IDE.

In implementarea programului am folosit libraria <TM1637Display.h> pentru a putea afisa si modifica timpii pe ceasurile digitale. Ca și functii implementate in aceasta biblioteca, am utilizat showNumberDecEx(…) si setSegments(…). Am mai inclus biblioteca “pitches.h”, pentru a putea alege sunetele pe care buzzerul să le emită pe parcursul jocului.

La inceputul programului, am definit pini tuturor componentelor incluse in proiect și inițializat toate variabilele folosite. In setup(), am setat intensitatea cu care să strălucească cifrele ceasurilor digitale și am inițializat toți pinii.

În loop(), logica jocului este împărțită în mai mulți pași. La început, este setat afișajul ceasurilor cu un timp inițial setat în program. Dacă encoderul este apăsat, jucătorul va putea reseta astfel timpii ceasurilor pe rând, fiind emis un sunet la orice apăsare și rotire a encoderului. Dacă un jucător apasă un buton, începe să se scurgă timpul celuilalt jucător și viceversa. Dacă unul dintre timpi s-a scurs, atunci se va emite un sunet timp de zece secunde și se va restarta singur jocul. Jocul se resetează la orice apăsare a encoderului rotativ, păstrându-se ultimii timpi setați. Fiecare operațiune a jocului este controlată într-un if și redirecționată în alt if dacă se schimbă operațiunea, totul rulând într-o buclă continuă.

Folosesc funcții ajutătoare care:

  • Verifică dacă timpul s-a scurs
  • Verifică dacă au trecut 10 secunde de la scurgerea timpului pentru ca jocul să se reseteze
  • Contribuie la setarea timpului și afisarea timpului în timpul modificării acestuia cu ajutorul encoderului
  • Modifică constant timpul afișat al unui player atunci când timpul se scurge constant

Rezultate Obținute

Se poate observa în imaginea de mai jos stadiul inițial al jocului și toate componentele utilizate în crearea proiectului.

În imaginea de mai jos avem afișați timpii scurși.

În imaginea de mai jos avem un timp scurs.

Linkul videoului - https://www.youtube.com/watch?v=1Mam0qoJtbU

Concluzii

Mi-a plăcut să realizez acest proiect deoarece sunt pasionat de sah și nu am visat vreodată că va veni ziua în care voi putea crea propriul chess timer. Mi se pare genial faptul că un cod scris într-un ide poate să pună în funcțiune cu atâta ușurință componentele hardware. Nu mă așteptam în schimb să fie atât de complex codul ce se ocupă de afișarea timpilor celor doi playeri. Dar a fost o experiență frumoasă.

Download

Documentația în format PDF.

Arhiva cu proiectul: Arhivă Proiect

Jurnal

  • 27.04.2021 alegere tema
  • 25.05.2021 finalizare afisaj ceasuri digitale
  • 27.05.2021 finalizare hardware
  • 1.06.2021 finalizare software
  • 3.06.2021 finalizare documentatie

Bibliografie/Resurse

pm/prj2021/avaduva/chesstimer.txt · Last modified: 2021/06/04 09:39 by andy_stefan.blanaru
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