This shows you the differences between two versions of the page.
pm:prj2024:fstancu:dragos.enachescu [2024/05/19 21:51] dragos.enachescu [Download] |
pm:prj2024:fstancu:dragos.enachescu [2024/05/27 00:40] (current) dragos.enachescu [Rezultate Obţinute] |
||
---|---|---|---|
Line 4: | Line 4: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Acest proiect, X și 0, se bazeaza pe clasicul joc intre 2 playeri, "X", respectiv "0", care marcheaza pe rand o casuta dintr-un tabel cu 3 linii si 3 coloane. Jucatorul care reuseste primul sa marcheze 3 casute adiacente pe orizontala, verticala sau diagonala castiga jocul. | + | Acest proiect, X și 0, se bazează pe clasicul joc între 2 playeri, "X", respectiv "0", care marchează pe rând o căsuță dintr-un tabel cu 3 linii și 3 coloane. Jucătorul care reușește primul să marcheze 3 căsuțe adiacente pe orizontală, verticală sau diagonală câstigă jocul. |
- | Ideea acestui proiect a venit in urma dorintei de a face un joc cu ajutorul placutei Arduino, iar ca punct de start am considerat acest joc a fi cel mai potrivit pentru invatare si aprofundarea cunostintelor, acesta fiind si un joc clasic si popular. | + | Ideea acestui proiect a venit în urma dorinței de a face un joc cu ajutorul plăcuței Arduino, iar ca punct de start am considerat acest joc a fi cel mai potrivit pentru învățare și aprofundarea cunoștințelor, acesta fiind și un joc clasic și popular. |
- | ===== Descriere generala ===== | + | ===== Descriere generală ===== |
- | Proiectul este dezvoltat pe o placuta Arduino Uno R3 ATMega328P si este afisat pe un ecran LCD sub forma unei matrici 3x3. | + | Proiectul este dezvoltat pe o plăcuță Arduino Uno R3 ATMega328P și este afișat pe un ecran LCD sub forma unei matrici 3x3. |
- | Jucatorii pot selecta casuta in care sa plaseze simbolul pentru joc prin intermediul unui joystick, fiecare jucator avand un led care se aprinde atunci cand ii este randul sa mute. | + | Jucătorii pot selecta căsuța în care să plaseze simbolul pentru joc prin intermediul unui joystick, fiecare jucător având un led care se aprinde atunci când îi este rândul să mute. |
- | La fiecare mutare se va auzi si un sunet prin intermediul unui buzzer, iar la finalul jocului se va afisa un mesaj in functie de cine a castigat, in timp ce se aprinde led-ul jucatorului respectiv, si afisand scorul dintre cei 2 jucatori. | + | La fiecare mutare se va auzi și un sunet prin intermediul unui buzzer, iar la finalul jocului se va afișa un mesaj în funcție de cine a câștigat, în timp ce se aprinde led-ul jucătorului respectiv, și afișând scorul dintre cei 2 jucători. |
{{:pm:prj2024:fstancu:diagrama3.png?400|}} | {{:pm:prj2024:fstancu:diagrama3.png?400|}} | ||
- | * **Joystick:** Permite jucatorilor sa se deplaseze pe tabla de joc si sa selecteze pozitia preferata; | + | * **Joystick:** Permite jucătorilor să se deplaseze pe tabla de joc și să selecteze poziția preferată; |
- | * **Arduino UNO:** Placuta pentru procesarea din spatele jocului; | + | * **Arduino UNO:** Plăcuța pentru procesarea din spatele jocului; |
- | * **Display LCD:** Afiseaza tabla de joc si scorul jucatorilor; | + | * **Display LCD:** Afișează tabla de joc și scorul jucătorilor; |
- | * **LED-uri:** Fiecare jucator are asociat un led de o anumita culoare; | + | * **LED-uri:** Fiecare jucător are asociat un led de o anumită culoare; |
- | * **Buzzer:** Acesta va scoate un sunet la fiecare mutare a jucatorilor. | + | * **Buzzer:** Acesta va scoate un sunet la fiecare mutare a jucătorilor. |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | **Lista de piese necesare pentru acest proiect** | + | **Listă de piese necesare pentru acest proiect** |
* Arduino Uno R3 ATmega328P | * Arduino Uno R3 ATmega328P | ||
* Ecran LCD 1.8" SPI | * Ecran LCD 1.8" SPI | ||
Line 37: | Line 37: | ||
=== Schemă componente === | === Schemă componente === | ||
- | {{:pm:prj2024:fstancu:x_si_0_schema.png?800|}} | + | {{:pm:prj2024:fstancu:schema_finala.png?600|}} |
- | ===== Software Design ===== | + | 1. Conectarea LCD-ului: \\ |
+ | - LED-, GND la GND de pe Arduino. \\ | ||
+ | - LED+, VCC la 5V de pe Arduino. \\ | ||
+ | - RESET la PIN8 de pe Arduino. \\ | ||
+ | - A0 la PIN9 de pe Arduino. \\ | ||
+ | - SDA la PIN11 de pe Arduino. \\ | ||
+ | - SCL la PIN13 de pe Arduino. \\ | ||
+ | - CS la PIN10 de pe Arduino. \\ | ||
- | <note tip> | + | 2. Conectarea Joystick-ului: \\ |
- | Descrierea codului aplicaţiei (firmware): | + | - GND la GND de pe Arduino. \\ |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | - 5V la 5V de pe Arduino. \\ |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | - VRx la A0 de pe Arduino. \\ |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | - VRy la A1 de pe Arduino. \\ |
- | * (etapa 3) surse şi funcţii implementate | + | - SW la A2 de pe Arduino. \\ |
- | </note> | + | |
- | ===== Rezultate Obţinute ===== | + | 3. Conectarea Buzzer-ului: \\ |
+ | - GND la GND de pe Arduino. \\ | ||
+ | - I/O la PIN12 de pe Arduino. \\ | ||
+ | - VCC la 5V de pe Arduino. \\ | ||
+ | 4. Conectarea LED-urilor: \\ | ||
+ | - roșu la PIN12. \\ | ||
+ | - albastru la PIN4. \\ | ||
+ | |||
+ | |||
+ | ===== Software Design ===== | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Mediu de dezvoltare: PlatformIO |
+ | |||
+ | Biblioteca utilizata: st7735.h | ||
</note> | </note> | ||
- | ===== Concluzii ===== | + | ===== Descriere implementare ===== |
- | ===== Download ===== | + | Mediul de dezvoltare folosit pentru realizarea acestui proiect a fost PlatformIO. În ceea ce privește componenta de bază a proiectului, și anume LCD-ul pe care este afișat tabla de joc, am folosit o librărie 3rd-party (st7735.h), dar și programare pentru setarea regiștrilor pentru jocul propriu-zis de X și 0 ca în laboratoare. |
- | <note warning> | + | Pentru gestionarea mutărilor jucătorilor am folosit modulul Joystick, pentru care am avut nevoie de modulul ADC, adica transformarea semnalului analog în digital, ca în laboratorul 4. |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | Pentru sunetul buzzer-ului am folosit timer-ul 0, care se declanșează la momentul plasării în căsuță a piesei corespunzătoare jucătorului. |
- | </note> | + | |
- | {{:pm:prj2024:fstancu:x_si_0_v2.zip|}} | + | Pentru a determina tabla, m-am folosit de o matrice de dimensiune 3 x 3, în care se stochează mutările, afișându-le în LCD prin intermediul unor coordonate, și folosindu-mă de funcțiile date de librărie pentru desenarea X-ului și 0-ului în căsuță, la finalul jocului afișându-se care jucător a câștigat și scorul final, cu rundele căștigate de jucătorul 1, jucătorul 2, respectiv egalitate. |
- | ===== Jurnal ===== | + | ===== Rezultate Obţinute ===== |
- | <note tip> | + | Rezultatele au fost cele așteptate de la început. Toate componentele funcționează, fiecare jucător are o culoare a led-ului specifică, iar la finalul fiecărui joc se afișează și scorul per total. |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | {{:pm:prj2024:fstancu:demo_gameplay.jpg?200|}} |
+ | |||
+ | |||
+ | {{:pm:prj2024:fstancu:demo_win1.jpg?200|}} | ||
+ | |||
+ | |||
+ | {{:pm:prj2024:fstancu:demo_draw.jpg?200|}} | ||
+ | ===== Concluzii ===== | ||
+ | |||
+ | În concluzie, a fost un proiect interesant în care am reușit să îmbin mai multe noțiuni legate de acest curs, și totodată să creez ceva fizic. Am învățat cum să leg aceste componente și să funcționeze simultan, iar rezultatul a fost unul plăcut și satisfăcător. | ||
+ | ===== Download ===== | ||
+ | |||
+ | {{:pm:prj2024:fstancu:x_si_0_final.zip|}} | ||
+ | |||
+ | ===== Jurnal ===== | ||
+ | * 22.04.2024: Alegerea temei de proiect. | ||
+ | * 01.05.2024: A ajuns comanda cu piesele. | ||
+ | * 05.05.2024: Crearea paginii proiectului și realizarea introducerii și a descrierii generale. | ||
+ | * 08.05.2024 - 15.05.2024: Implementare hardware. | ||
+ | * 22.05.2024 - 26.05.2024: Implementare software. | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | ATmega PWM: https://avr-guide.github.io/pwm-on-the-atmega328/ \\ |
+ | ATmega 328 pinout: https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf?fbclid=IwZXh0bgNhZW0CMTAAAR14O3QysF1owaUfevH9bi4aS1jhYxSaT7JwjQQZV5SsGNGcppWdgsPBBPA_aem_AeMVmZAQ4 \\ | ||
+ | Laboratoare PM 2024 | ||
</note> | </note> | ||
<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> | ||