Differences

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

Link to this comparison view

pm:prj2023:adarmaz:joc_de_sah [2023/05/06 17:05]
victor.moldovan [Software Design]
pm:prj2023:adarmaz:joc_de_sah [2023/05/26 23:08] (current)
victor.moldovan
Line 8: Line 8:
  
 {{:​pm:​prj2023:​adarmaz:​microsoftteams-image.png|}} {{:​pm:​prj2023:​adarmaz:​microsoftteams-image.png|}}
- 
-Jocul de sah este pornit in momentul in care cei 2 jucatori apasa "​○"​ **(select)**. 
  
 Jucatorii pot naviga cu butoanele "​←",​ "​↑",​ "​→",​ "​↓",​ care muta cursorul pe tabla. Cursorul fiecarui jucator nu poate fi mutat decat atunci cand este tura acelui jucator. Jucatorii pot naviga cu butoanele "​←",​ "​↑",​ "​→",​ "​↓",​ care muta cursorul pe tabla. Cursorul fiecarui jucator nu poate fi mutat decat atunci cand este tura acelui jucator.
Line 16: Line 14:
  
 In cazul in care este apasat **(select)** pe altceva decat un spatiu valid, mutarea se anuleaza si trebuie **(select)**ata din nou o piesa. In cazul in care este apasat **(select)** pe altceva decat un spatiu valid, mutarea se anuleaza si trebuie **(select)**ata din nou o piesa.
-Jucatorii pot, odata pe tura, selecta "​TIE"​ pentru a oferi o remiza. Asta ofera control celuilalt jucator, care poate accepta **(select)**and "​TIE" ​sau refuza ​**(select)**and ​orice altceva.+Jucatorii pot, odata pe tura, selecta "​TIE"​ pentru a oferi o remiza. Asta ofera control celuilalt jucator, care poate accepta ​apasand ​**(select)** sau refuza ​apasand ​orice altceva.
  
-Fiecare jucator are un timp fix pentru a realiza ​mutarea. In cazul in care nu se incadreaza in timp, jocul va executa o mutare la intamplare.+Fiecare jucator are un timp fix pentru a realiza ​mutarile. In cazul in care nu se incadreaza in timp, jocul va executa o mutare la intamplare.
  
 Un led este aprins de partea jucatorului activ pentru a indica a cui tura este. Un led este aprins de partea jucatorului activ pentru a indica a cui tura este.
Line 24: Line 22:
 Jucatorii pot **(select)**a "​CONCEDE"​ pentru a renunta si a oferi victoria oponentului. Jucatorii pot **(select)**a "​CONCEDE"​ pentru a renunta si a oferi victoria oponentului.
  
-In momentul in care un joc se incheie, ​jucatorii ​trebuie sa apese **(select)** simultan ​pentru a porni un nou joc.+In momentul in care un joc se incheie, ​jucatorul a carui led este aprins ​trebuie sa apese oricare buton pentru a porni un nou joc.
  
 {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2023/​adarmaz/​pm_faculta_1_.png}} {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2023/​adarmaz/​pm_faculta_1_.png}}
Line 35: Line 33:
   * 1 LCD 128x64   * 1 LCD 128x64
   * 10 butoane   * 10 butoane
 +  * 10 rezistoare
 +  * Cabluri
 +
 +Pinul 4 alimenteaza LED-ul jucatorului 1.
 +Pinul 5 alimenteaza LED-ul jucatorului 2.
 +
 +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2023/​adarmaz/​led.png}}
 +
 +Pinul 2 alimenteaza butoanele jucatorului 1.
 +Pinul 3 alimenteaza butoanele jucatorului 2.
 +
 +{{:​pm:​prj2023:​adarmaz:​butoane.png?​200|}}
 +
 +Ambele circuite sunt conectate la pinul A2, de pe care se citeste tensiunea aferenta fiecarui buton.
 +Fiecare din butoane scurtcircuiteaza un numar de rezistente pentru a modifica tensiunea de pe A2.
 +
 +Daca sunt apasate mai multe butoane deodata, butonul cel mai la stanga (din perspectiva jucatorului activ) are prioritate, deoarece sunt scurt-circuitate toate rezistentele de la dreapta butonului.
 +
 +Pinii 10 si 11 transmit date LCD-ului. 12 este clock-ul.
 +
 +Pinul GND al LCD-ului este conectat la GND-ul de pe Arduino. Pinul VCC al LCD-ului este conectat la 5V.
 +
 +Pinii BLA si BLK controleaza luminozitatea ecranului si sunt conectati la 3.3V si GND, respectiv.
 +
 +Codul (orientativ) de culoare pentru cabluri este:
 +  * Verde pentru circuitele cu LEDuri
 +  * Alb-galben-gri deschis pentru conexiunile butoanelor care scurtcircuiteaza rezistente
 +  * Portocaliu pentru 3.3V
 +  * Rosu pentru 5V
 +  * Negru si maro pentru ground
 +  * Maro pentru conexiunea cu A2
  
 ===== Software Design ===== ===== Software Design =====
Line 42: Line 71:
 Datele care trebuiesc afisate pe ecran sunt reprezentate printr-un sir de 128x64 biti. Datele care trebuiesc afisate pe ecran sunt reprezentate printr-un sir de 128x64 biti.
  
-Tabla de sah este de dimensiune 64x64, fiecare patrat fiind 8x8. Programul ​va avea o matrice +Tabla de sah este de dimensiune 64x64, fiecare patrat fiind 8x8. Programul ​are o matrice 
-de 8x8 char pe care o va folosi ​pentru a calcula starile jocului.+de 8x8 char pe care o foloseste ​pentru a calcula starile jocului.
  
-Bitii de pe ecran vor fi setati prin aplicarea unor masti hardcodate care reprezinta fiecare element de UI.+Bitii de pe ecran sunt setati prin aplicarea unor masti hardcodate care reprezinta fiecare element de UI.
  
-Fiecare jucator va avea un cursor ​reprezentat ca char, stocand o pozitie pe tabla de joc.+Jucatorii au un cursor, stocand o pozitie pe tabla de joc.
  
-Apasarea de butoane va genera intreruperi ​pentru ​input.+Se genereaza o intrerupere la fiecare masuratoare pe pin analogic ​pentru ​a detecta daca butoanele au fost apasate. 
 + 
 +Se genereaza o intrerupere la fiecare secunda pentru a decrementa timerul jucatorului activ. 
 + 
 +Am folosit biblioteca U8G2 pentru a scrie pe LCD.
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-===== Concluzii =====+Un joc de sah cu ecran LCD.
  
 ===== Download ===== ===== Download =====
 +
 +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +https://​github.com/olikraus/​u8g2 - Biblioteca u8g2.
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +
-</note>+
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ 
pm/prj2023/adarmaz/joc_de_sah.1683381914.txt.gz · Last modified: 2023/05/06 17:05 by victor.moldovan
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