This shows you the differences between two versions of the page.
pm:prj2023:adarmaz:joc_de_sah [2023/05/06 17:01] victor.moldovan [Hardware 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 31: | Line 29: | ||
Lista componentelor: | Lista componentelor: | ||
+ | * 2 LED | ||
+ | * 1 placa Arduino UNO | ||
+ | * 1 LCD 128x64 | ||
+ | * 10 butoane | ||
+ | * 10 rezistoare | ||
+ | * Cabluri | ||
- | -2 LED | + | Pinul 4 alimenteaza LED-ul jucatorului 1. |
- | -1 placa Arduino UNO | + | Pinul 5 alimenteaza LED-ul jucatorului 2. |
- | -1 LCD 128x64 | + | |
- | -10 butoane | + | {{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 43: | 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. |
- | Fiecare jucator va avea un cursor reprezentat ca char, stocand o pozitie pe tabla de joc. | + | Bitii de pe ecran sunt setati prin aplicarea unor masti hardcodate care reprezinta fiecare element de UI. |
- | Apasarea de butoane va genera intreruperi pentru input. | + | Jucatorii au un cursor, stocand o pozitie pe tabla de joc. |
+ | |||
+ | 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> |