Daniel-George ȚUICU (78561) - Darts Scoreboard: LCD

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Pentru acest proiect doresc sa implementez un scoreboard digital ce poate fi folosit pentru jocuri de Darts. Acesta va suporta 3 moduri de joc: Cricket, 301 si 501. Scorurile vor fi introduse cu ajutorul unui keypad si vor fi afisate pe LCD pe perioada jocului.

Descrierea celor 3 moduri de joc

- Cricket

Fiecare jucator trebuie sa nimereasca de cate 3 ori pentru a inchide fiecare din segmentele: 20, 19, 18, 17, 16, 15 si centru. Restul sunt neutre si nu aduc beneficii. Pentru a inchide o zona, se poate lovi si in segmentul care marcheaza dublu, respectiv triplu, astfel din numarul de lovituri ramase se vor scadea 2, respectiv 3 lovituri (triplu evident va inchide zona imediat pentru jucatorul respectiv). Jocul se termina cand toate zonele au fost inchise de catre un jucator, iar acesta castiga.

- 301

Fiecare jucator trebuie sa inregistreze puncte cat mai multe. Acestea se vor scadea din totalul de 301, insa trebuie facut un numar fix de 301 puncte. Pe langa aceasta, lovitura de incheiere trebuie sa fie in segmentul care dubleaza. De exemplu, daca un jucator are 10 puncte ramase, ca sa castige trebuie sa loveasca 5-dublu pentru a face fix 10; daca face mai mult de 10 puncte isi pierde tura si este randul celuilalt jucator sa arunce. Modul pe care l-am implementat suporta 4 jucatori

- 501

La fel ca 301, dar scorul incepe de la 501. Acest mod de joc este un bonus pe care l-am realizat ulterior.

De ce?

Acest proiect ar putea fi folosit la orice joc de darts, fara a fi nevoie de foi sau o aplicatie online/pe telefon. De asemenea pe viitor acest proiect poate continua sa fie imbunatatit, adaugand moduri noi de joc sau un LCD mai mare etc.

Descriere generală

Descriere hardware

In final, scoreboard-ul va fi controlat cu ajutorul keypadului (nu mai este optional, este varianta cu care am realizat actual). Butoanele vor permite introducerea scorului (301/501) sau alegerea segmentului (Cricket). Va exista un buton general pentru reset. Toate datele sunt afisate real-time pe LCD.

Descriere software

Va exista un meniu de start in care alegi unul din cele 3 moduri de joc. Pentru fiecare din acestea va aparea un scoreboard unde se pot introduce date in mod interactiv. Fiecare modificare se va vedea automat si pe LCD.

Hardware Design

Lista de piese:

  • Fire, rezistente (cateva in plus chiar), condensatoare, 2 leduri, 2 butoane, 2 diode
  • Placuta PM2018 + ATmega324A
  • Modul LCD SPI de 2.8'' cu touchscreen - Controller ILI9341 și XPT2046 (240×320 px)

  • Convertor de niveluri logice bidirecțional pe 8 Biți TXS0108E

  • Regulator de tensiune LM1086IT-3.3

  • Keypad

Schema electrica:

Software Design

Initial sau dupa apasarea butonului de reset, va fi afisat meniul principal din care se poate alege unul din cele 3 moduri de joc. Pentru acest meniu, cat si pentru cele 3 moduri de joc a fost implementata o functie generala de control. Toata interactiunea cu programul se face folosind keypadul. Pentru modurile de joc 301 si 501 exista posibilitatea sa joace 4 persoane in acelasi timp, fiecare cu scorul propriu si counter pentru victorii. Modul Cricket este doar pentru 2 jucatori.

Controls:

- 301 si 501: se alege playerul activ folosind una din tastele A, B, C, D. Se introduce scorul folosind * si se poate sterge o cifra cu #. Scorul se introduce folosind cifrele 0-9, numere de maxim 3 cifre.

- Cricket: schema este mai simpla. Cu A si B se alege jucatorul activ. Se introduc maxim 3 hituri pentru fiecare din coloanele tabelei folosind cifrele 0-9.

Rezultate Obţinute

Rezultatul este o aplicatie interactiva foarte utila pentru pasionatii de Darts. Existenta unui device dedicat pentru a tine scorurile este foarte folositor.

Mai exista cateva cazuri in care LCD-ul se comporta anormal in cazul in care vreunul din pini nu este conectat cum trebuie. Foarte rar se intampla ca pinul care sta pe GND sa se miste si sa nu mai faca contact cum trebuie, moment in care LCD-ul sta alb si nu afiseaza ceva.

Demo: https://youtu.be/bPSUVp3IKgM

Concluzii

A fost o experienta unica in ceea ce priveste programarea in general. Sa vezi rezultatele obtinute pe un LCD si sa controlezi totul dintr-un keypad in miniatura ofera o satisfactie neobisnuita.

Eu mi-as fi dorit sa mai pot adauga animatii sau moduri de joc interesante, dar din pacate programul deja este foarte aproape de limita memoriei flash si nu se mai pot adauga alte features. Poate pe un controller cu mai multa memorie voi continua proiectul.

Download

Jurnal

  • 12.04.18: Stabilirea temei de lucru. Realizarea unor operatii de lipit cu scopul de pregatire
  • 19.04.18: Cumparare pachet piese de baza + 2 placute PM2018. Discutii generale despre proiect
  • 21.04.18: Realizarea paginii de wiki pentru milestone 1 si submisia acesteia
  • 26.04.18: Lipire mare parte a componentelor + cateva rezistente in plus
  • 03.05.18: Lipirea ultimelor componente ramase si montarea microcontroller-ului in socket. Alimentarea placutei si testarea acesteia cu succes. Cumpararea unui LCD-SPI, keypad, butoane, fire si o placuta de test
  • 06.05.18: Realizarea schematicului in Eagle
  • 12.05.18: Cumparare: translator de la 5V la 3V3, tranzistor care converteste de la 5V la 3V3, mai multe fire, un breadboard mic
  • 13.05.18: Primele teste cu biblioteca pentru keypad. Dupa mai multe incercari, la un moment dat s-a blocat placuta si nu mai puteam face nimic cu ea
  • 14.05.18: Am mers la un asistent sa imi pun bootloaderul iar
  • 16.05.18: Realizarea cablajului pentru LCD si lipirea translatorului si tranzistorului pe placuta de test. Operatiune care a durat doar pana la 5 dimineata ziua urmatoare.
  • 18.05.18: Realizarea modului de joc 301 si 501 si a meniului de inceput.
  • 19.05.18: Primii pasi pentru modul de joc Cricket in urma caruia placuta nu a mai raspuns, iar
  • 21.05.18: Am fost iar la un asistent sa pun bootloaderul si am terminat toate modurile de joc si am updatat wikiul cu tot ce este acum.

Bibliografie/Resurse

pm/prj2018/rbarbascu/78561.txt · Last modified: 2021/04/14 17:07 (external edit)
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