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

  • Arduino Uno
  • BreadBoard
  • 9 leduri NeoPixel
  • Keypad 4*4
  • LCD
  • 2 rezistente
  • Potentiometru
  • Pushbutton
  • Fire

Schema electrica

Software Design

Descrierea codului aplicaţiei:

  • mediul de dezvoltare: Arduino IDE
  • biblioteci şi surse 3rd-party:
    1. Adafruit_NeoPixel.h (pentru led-uri)
    2. Keypad.h (pentru keypad-ul 4*4)
    3. LiquidCrystal.h (pentru ecranul LCD)
  • algoritmul:

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

  • setup
    1. pornirea LCD-ului
    2. configurarea LCD-ului
    3. afisarea pe LCD a mesajului default
    4. initializarea led-urilor
  • loop
    1. primirea datelor de la keypad si de la butonul de reset
    2. setarea culorilor ledurilor
    3. afisarea mesajului corespunzator in functie de rezultatul jocului
  • checkWin
    1. verifica stateul jocului dupa fiecare mutare (daca a castigat X sau 0 sau daca e remiza sau daca jocul continua)

Rezultate obtinute

Concluzii

Download

Jurnal

  • Etapa 1:

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.

  • Etapa 2:

Achizitionarea pieselor necesare si a ustensilelor utilizate pentru lipirea firelor

  • Etapa 3:

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

Bibiliografie/Resurse

pm/prj2021/avaduva/xsi0.txt · Last modified: 2021/05/22 21:56 by cristina.balasoiu
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