This shows you the differences between two versions of the page.
pm:prj2022:avaduva:marian.lupuleasa [2022/05/27 18:46] marian.lupuleasa [Bibliografie/Resurse] |
pm:prj2022:avaduva:marian.lupuleasa [2022/06/01 21:03] (current) marian.lupuleasa [Rezultate Obţinute] |
||
---|---|---|---|
Line 8: | Line 8: | ||
==== Descrierea Proiectului ==== | ==== Descrierea Proiectului ==== | ||
- | Un joc multiplayer (2 persoane) în care jucătorii au alocate piese de o anumită culoare și le vor folosi pentru a completa, alternativ, un grid 8x8. Câstigă primul jucător care face o secvență de 4 piese aliniate. | + | Un joc multiplayer (2 persoane) în care jucătorii au alocate piese de o anumită culoare și le vor folosi pentru a completa, alternativ, un grid 4x4. Câstigă primul jucător care face o secvență de 4 piese aliniate. |
==== Scopul Proiectului ==== | ==== Scopul Proiectului ==== | ||
Line 21: | Line 21: | ||
===== Descriere Generală ===== | ===== Descriere Generală ===== | ||
- | Vor exista 2 jucători care vor plasa, alternativ, piese pe grid (matrice de LED-uri de dimensiune 8x8). | + | Vor exista 2 jucători care vor plasa, alternativ, piese pe grid (matrice de LED-uri de dimensiune 4x4). |
- | Deoarece în jocul de bază grid-ul este în poziție verticală, piesele se vor plasa pe o anumită coloană, piesa "căzând" și fiind ocupată poziția cea mai de jos a coloanei respective. | + | Cu ajutorul a 2 butoane, playerii pot selecta poziția pe care vor plasa piesa (dreapta/jos) și confirmarea selecției se va face cu un al 3-lea buton. După confirmarea selecției, este rândul celuilalt player să își facă mișcarea. |
- | + | ||
- | Cu ajutorul a 2 butoane, playerii pot selecta coloana pe care vor plasa piesa (stânga-dreapta) și confirmarea selecției se va face cu un al 3-lea buton. După confirmarea selecției, este rândul celuilalt player să își facă mișcarea. | + | |
La fiecare confirmare a selecției, se va verifica dacă pe grid există o secvență de 4 piese de aceeași culoare (în orice direcție) și, în caz afirmativ, jocul se va termina. | La fiecare confirmare a selecției, se va verifica dacă pe grid există o secvență de 4 piese de aceeași culoare (în orice direcție) și, în caz afirmativ, jocul se va termina. | ||
Line 33: | Line 31: | ||
* Arduino UNO | * Arduino UNO | ||
* Breadboard | * Breadboard | ||
- | * 3 Butoane (2 pentru selectarea coloanei, 1 pentru confirmarea plasării piesei) | + | * 3 Butoane (2 pentru selectarea poziției, 1 pentru confirmarea plasării piesei) |
* Buzzer (sunet pentru terminarea unei runde, sunet pentru câștigarea unui anumit număr de runde, sunet pentru semnalizarea player-ului a cărui rând este) | * Buzzer (sunet pentru terminarea unei runde, sunet pentru câștigarea unui anumit număr de runde, sunet pentru semnalizarea player-ului a cărui rând este) | ||
* Fire | * Fire | ||
- | * LCD (afișarea playerului care trebuie să își plaseze piesa, afișarea câștigătorului unei runde, afișarea scorului) | + | * LCD I2C (afișarea playerului care trebuie să își plaseze piesa, afișarea câștigătorului unei runde, afișarea scorului) |
* Matrice de LED-uri (reprezentarea gridului) | * Matrice de LED-uri (reprezentarea gridului) | ||
* Rezistente | * Rezistente | ||
Line 52: | Line 50: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | TODO | + | Am folosit biblioteca <LCD_I2C.h> pentru adaptorul I2C și display LCD: |
+ | * lcd.begin(): inițializarea ecranului LCD | ||
+ | * lcd.clear(): resetează ecranul LCD-ului pentru a nu rămâne caractere nedorite | ||
+ | * lcd.setCursor(x, y): setează poziția cursorului pe rândul y, coloana x | ||
+ | * lcd.print(string): afișează string pe LCD | ||
+ | În setup(): | ||
+ | * inițializez ecranul LCD, butoanele, buzzer-ul și LED-urile | ||
+ | |||
+ | În loop(): | ||
+ | * simulez scenariul de joc prin alternarea rândului jucătorilor, aprinderea LED-urilor, activarea buzzer-ului și afișarea de text pe ecranul LCD | ||
+ | |||
+ | Funcții: | ||
+ | * selectRow(int nr): setează pinii corespunzători rândului nr pe LOW pentru a putea fi aprinși | ||
+ | * select(Red/Green)Col(int nr, int state): setează pinii corespunzători rândului nr pe state | ||
+ | * fourConnect(int* arr, int player): verifică dacă player-ul curent a câștigat jocul | ||
+ | |||
+ | Logica codului: | ||
+ | * mă folosesc de 2 matrice: green și red, pentru a ține minte care LED-uri trebuie aprinse și care nu la orice moment al jocului | ||
+ | * în orice moment al jocului, poziția curentă în matrice va fi marcată de un LED aprins provizoriu, până când player-ul confirmă selecția | ||
+ | * navigarea se face cu ajutorul a două butoane, unul care mișcă poziția jucătorului la dreapta și unul care o mișcă în jos | ||
+ | * după fiecare selecție, se verifică dacă jucătorul a câștigat runda respectivă și, dacă da, se incrementează scorul și se resetează jocul | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | {{:pm:prj2022:avaduva:whatsapp_image_2022-05-27_at_6.37.24_pm.jpeg?500|}} | + | {{:pm:prj2022:avaduva:whatsapp_image_2022-06-01_at_7.29.11_pm.jpeg?500|}} |
- | {{:pm:prj2022:avaduva:whatsapp_image_2022-05-27_at_6.37.24_pm_1_.jpeg?500|}} | + | {{:pm:prj2022:avaduva:whatsapp_image_2022-06-01_at_7.29.12_pm.jpeg?500|}} |
+ | |||
+ | {{:pm:prj2022:avaduva:whatsapp_image_2022-06-01_at_7.29.12_pm_1_.jpeg?500|}} | ||
+ | |||
+ | Link Demo: | ||
+ | [[https://youtu.be/169sOtUbzFk]] | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
Line 84: | Line 107: | ||
===== Download ===== | ===== Download ===== | ||
- | TODO | + | {{:pm:prj2022:avaduva:connect4.zip?500|}} |
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 97: | Line 120: | ||
27 Mai 2022 - Documentatie 2 (schemă electrică, rezultate, concluzii, bibliografie) | 27 Mai 2022 - Documentatie 2 (schemă electrică, rezultate, concluzii, bibliografie) | ||
+ | |||
+ | 28 Mai - 1 Iunie 2022 - Finalizare proiect + Documentatie 3 (demo, cod, concluzii finale) | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
+ | Idee generala despre proiect: | ||
[[https://www.instructables.com/Connect-4-Game-Using-Arduino-and-Neopixel/]] | [[https://www.instructables.com/Connect-4-Game-Using-Arduino-and-Neopixel/]] | ||
+ | |||
+ | Cum sa utilizez LCD I2C: | ||
[[https://create.arduino.cc/projecthub/akshayjoseph666/interface-i2c-16x2-lcd-with-arduino-uno-just-4-wires-273b24]] | [[https://create.arduino.cc/projecthub/akshayjoseph666/interface-i2c-16x2-lcd-with-arduino-uno-just-4-wires-273b24]] | ||
- | [[https://docs.arduino.cc/built-in-examples/display/RowColumnScanning]] | + | |
+ | Cum sa utilizez matricea de LED-uri: | ||
+ | [[https://www.youtube.com/watch?v=X9tsfOeYnAU]] | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |