Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:avaduva:xsi0 [2021/05/22 21:03]
cristina.balasoiu
pm:prj2021:avaduva:xsi0 [2021/05/22 21:56] (current)
cristina.balasoiu
Line 3: Line 3:
  
 ===== Introducere ===== ===== 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"​+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 ===== ===== Descriere generala =====
-Fiecare jucator va apasa pe rand cate un buton din intervalul 1-9 de pe keypad ​pentru a-si face miscareaInitial toate ledurile conectate ​sunt albe, ceea ce inseamna ca tabla de joc goalaLedul corespunzator ​butonului apasat ​se va face verde daca jucatorul joaca cu X sau rosu daca joaca cu 0Jocul 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"​.+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 ​conectat la LCD iar LCD-ul e conectat la placuta la  pinii A0-A5 si la o rezistenta pozitionata pe breadboardKeypad-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 ==== ==== Schema bloc ====
Line 20: Line 21:
   * Keypad 4*4   * Keypad 4*4
   * LCD   * LCD
-  * Rezistenta+  * 2 rezistente
   * Potentiometru   * Potentiometru
   * Pushbutton   * Pushbutton
Line 36: Line 37:
       - LiquidCrystal.h (pentru ecranul LCD)       - LiquidCrystal.h (pentru ecranul LCD)
   * algoritmul: ​   * 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.  +    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  
 +          - pornirea LCD-ului 
 +          - configurarea LCD-ului 
 +          - afisarea pe LCD a mesajului default 
 +          - initializarea led-urilor 
 +      * loop 
 +          - primirea datelor de la keypad si de la butonul de reset 
 +          - setarea culorilor ledurilor 
 +          - afisarea mesajului corespunzator in functie de rezultatul jocului 
 +      * checkWin  
 +          - verifica stateul jocului dupa fiecare mutare (daca a castigat X sau 0 sau daca e remiza sau daca jocul continua)
  
 ===== Rezultate obtinute ===== ===== Rezultate obtinute =====
Line 48: Line 61:
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download ​=====+==== Download ====
 {{:​pm:​prj2021:​avaduva:​balasoiu_cristina_ioana_333cc_resurse.zip|}} {{:​pm:​prj2021:​avaduva:​balasoiu_cristina_ioana_333cc_resurse.zip|}}
-===== Jurnal ​=====+==== Jurnal ====
   * Etapa 1:   * 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.     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.
Line 58: Line 71:
     Asamblarea efectiva a partii hardware, adaptarea codului si testarea rezultatului final     Asamblarea efectiva a partii hardware, adaptarea codului si testarea rezultatului final
  
-===== Bibiliografie/​Resurse ​=====+==== Bibiliografie/​Resurse ====
 [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​avaduva/​xsi0]] [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​avaduva/​xsi0]]
 [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​avaduva/​xsi0?​do=export_pdf]] [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​avaduva/​xsi0?​do=export_pdf]]
pm/prj2021/avaduva/xsi0.1621706619.txt.gz · Last modified: 2021/05/22 21:03 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