Table of Contents

X si 0

Autor: Balasoiu Cristina Ioana

Introducere

Proiectul are ca scop creerea clasicului joc de X si 0 folosind leduri NeoPixel pentru simularea chenarelor jocului si un ecran LCD ce poate afisa urmatoarele mesaje: “X WON”, “0 WON” si “TIE”. Fiecare jucator va apasa pe rand cate un buton din intervalul 1-9 de pe keypad pentru a-si face miscarea. Initial toate ledurile conectate sunt albe, ceea ce inseamna ca tabla de joc e goala. Ledul corespunzator butonului apasat se va face verde daca jucatorul joaca cu X sau rosu daca joaca cu 0. Jocul continua pana cand unul dintre jucatori castiga sau pana se ajunge la remiza. Rezultatul rundei va fi afisat pe ecranul LCD. Daca se doreste inceperea unui nou joc se va apasa butonul de reset, moment incare toate ledurile vor avea iar culoarea gri iar ecranul LCD va afisa mesajul “Reset pressed”.

Descriere generala

Ledurile, ecranul LCD, potentiometrul folosit pentru LCD si butonul sunt conectate la breadboard pentru a se putea folosi de VCC si GND. Ledurile sunt conctate la placuta la pinul 12 pentru a primi input. Potentiometrul e conectat la LCD iar LCD-ul e conectat la placuta la pinii A0-A5 si la o rezistenta pozitionata pe breadboard. Keypad-ul e conectat la placuta la pinii 2-9 (2-5 pentru coloane si 6-9 pentru linii) catre care trimite simbolul butonului apasat. Butonul e conectat la pinul 10, avand ca output state-ul sau (HIGH daca a fost apasat si LOW in caz contrar). Cei doi jucatori vor uca apasand pe rand cate un buton de pe keypad.

Schema bloc

Hardware Design

Lista de componente

Schema electrica

Software Design

Descrierea codului aplicaţiei:

Algoritmul creeaza o mapare intre butoanele 1-9 ale keypad-ului si cele 9 leduri conectate pentru a simula tabla de joc. Fiecare apasare a unuia dintre butoanele mentionate reprezinta o mutare. Se utilizeaza o variabila player initiata cu 1 pentru a retine jucatorul curent. Aceasta poate avea valorile 1 sau -1. La fiecare mutare se face switch intre jucatori (player *= -1) pentru a aprinde ledul corespunzator butonului apasat in culoarea jucatorului corespunzator si se verifica daca s-a creat un sir consecutiv de 3 culori identice pe oricare linie, coloana sau diagonala sau, in caz contrar, daca tabla este plina (remiza). Daca s-a detectat oricare dintre cele 3 rezultate posibile de finalizare a jocului (X castiga, 0 castiga sau remiza), acesta va fi afisat pe ecranul LCD impreuna cu scorul. Exista posibilitatea de incepere a unui joc nou prin apsarea butonului de reset, moment in care ledurile se vor intoarce la culoarea default (alb), matricea folosita pentru retinerea apasarilor efctuate de jucatori e reinitiata iar rezultatul jocului anterior este sters de pe ecranul LCD.

Functii folosite

Rezultate obtinute

Link catre demo: https://drive.google.com/file/d/1sTbpD5P_kCgGkzJM4Ct9Iu5iu5F1IGT-/view?usp=sharing

Concluzii

Download

balasoiu_cristina_ioana_333cc_resurse.zip

Jurnal

Dezvoltarea codului de baza si a circuitului pe platforma https://www.tinkercad.com/ pentru a putea realiza mai usor o lista cu piesele necesare pentru ideea de proiect aleasa.

Achizitionarea pieselor necesare si a ustensilelor utilizate pentru lipirea firelor

Asamblarea efectiva a partii hardware, adaptarea codului si testarea rezultatului final

Bibiliografie/Resurse

https://ocw.cs.pub.ro/courses/pm/prj2021/avaduva/xsi0 https://ocw.cs.pub.ro/courses/pm/prj2021/avaduva/xsi0?do=export_pdf https://www.tinkercad.com/