This shows you the differences between two versions of the page.
pm:prj2022:avaduva:marian.lupuleasa [2022/06/01 19:19] marian.lupuleasa [Bibliografie/Resurse] |
pm:prj2022:avaduva:marian.lupuleasa [2022/06/01 21:03] (current) marian.lupuleasa [Rezultate Obţinute] |
||
---|---|---|---|
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 64: | Line 62: | ||
* simulez scenariul de joc prin alternarea rândului jucătorilor, aprinderea LED-urilor, activarea buzzer-ului și afișarea de text pe ecranul LCD | * 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-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|}} | ||
- | {{:pm:prj2022:avaduva:whatsapp_image_2022-05-27_at_6.37.24_pm_1_.jpeg?500|}} | + | Link Demo: |
+ | [[https://youtu.be/169sOtUbzFk]] | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
Line 107: | 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: |
- | + | ||
- | How to control matrix LEDs: | + | |
[[https://www.youtube.com/watch?v=X9tsfOeYnAU]] | [[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> |