This shows you the differences between two versions of the page.
pm:prj2024:rvirtan:xsi0riz [2024/04/30 20:04] florin.rizea [Descriere generală] |
pm:prj2024:rvirtan:xsi0riz [2024/06/01 18:32] (current) florin.rizea [Implementare & flux] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== X si 0 LCD Grafic ====== | ====== X si 0 LCD Grafic ====== | ||
+ | <note tip> | ||
+ | * Rizea Florin Alexandru | ||
+ | * 332CD | ||
+ | * îndrumător: Răzvan Virtan | ||
+ | </note> | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Proiectul consta in implementarea jocului X si 0 pe un LCD grafic, jocul fiind jucat impotriva CPU-ului, iar interactiunea jucatorului cu jocul in sine se va realiza prin butoane. De asemenea, voi incerca sa integrez un scoreboard care sa tina cont de cate ori a castigat jucatorul si de cate ori a castigat CPU-ul. | + | Proiectul consta in implementarea jocului X si 0 pe un LCD touchscreen grafic, jocul fiind de tipul Player vs Player, iar interactiunea jucatorului cu jocul in sine se va realiza prin touchscreen. De asemenea, voi incerca sa integrez un scoreboard care sa tina cont de cate ori a castigat jucatorul 1 si de cate ori a castigat jucatorul 2. |
Ideea mea a plecat de la pasiunea pentru jocuri avuta inca de cand eram mic, si nu de putine ori m-am intrebat cum sunt facute joculetele pe care le tineam in mana cand eram mic. | Ideea mea a plecat de la pasiunea pentru jocuri avuta inca de cand eram mic, si nu de putine ori m-am intrebat cum sunt facute joculetele pe care le tineam in mana cand eram mic. | ||
Line 9: | Line 14: | ||
Schema bloc reprezinta toate modulele proiectului, descriind modul in care functioneaza. | Schema bloc reprezinta toate modulele proiectului, descriind modul in care functioneaza. | ||
- | In principiu, as dori sa am 4 butoane cu care sa navighez matricea jocului (pentru fiecare directie in parte) + un buton pentru resetare a scorului. | ||
</note> | </note> | ||
- | {{ :pm:prj2024:rvirtan:schema.png?300 |}} | + | {{ pm:prj2024:rvirtan:schema_bloc.png |}} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
+ | Pentru realizarea proiectului, am folosit următoarele componente: | ||
+ | * Placă compatibilă cu Arduino UNO (ATmega328p + CH340); | ||
+ | * 2.8" SPI LCD Module cu Touchscreen cu ILI9341 si XPT2046 Controller | ||
- | <note tip> | + | Pentru a activa functionalitatea touchscreen a LCD-ului a fost folosita biblioteca Adafruit pentru ILI9341 si XPT2064_TouchScreen. |
- | Aici puneţi tot ce ţine de hardware design: | + | |
- | * listă de piese | + | |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | |
- | * diagrame de semnal | + | |
- | * rezultatele simulării | + | |
- | </note> | + | |
- | ===== Software Design ===== | + | Urmatoarea schema urmareste cablajele necesare functionarii proiectului: |
+ | {{ pm:prj2024:rvirtan:dadadadsasda.drawio.png?800 |}} | ||
+ | Mai jos se poate vedea cum arata proiectul la nivel hardware: | ||
+ | {{ pm:prj2024:rvirtan:whatsapp_image_2024-05-31_at_20.02.44.jpeg?400 |}} | ||
+ | ===== Software Design ===== | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | Mediu de dezvoltare: |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Arduino IDE 1.8.19 |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | Biblioteci folosite: |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * Adafruit pentru ILI9341 |
- | * (etapa 3) surse şi funcţii implementate | + | * XPT2064_TouchScreen |
</note> | </note> | ||
+ | |||
+ | ===== Implementare & flux ==== | ||
+ | La pornirea jocului, pe ecran vor fi afisate o matrice 3x3, o tabela de scor si un buton de reset. | ||
+ | |||
+ | Pentru fiecare runda se va alterna ordinea de inceput a jucatorilor (intotdeauna va incepe jucatorul 1 prima data, apoi jucatorul 2, etc). Initial, jucatorul 1 va fi reprezentat de simbolul 'X', urmand ca la urmatoarea runda acestuia sa ii revina simbolul 'O'. | ||
+ | Tabela de scor va fi incrementata in functie de jucatorul castigator, iar in functie de egal, se va sterge matricea, neincrementand niciun scor (evident). La fiecare mutare realizata pe matrice, va fi verificat daca vreun jucator a castigat runda. | ||
+ | Butonul de reset va reseta atat matricea, indiferent de stadiul in care este, cat si scorurile jucatorilor, precum si ordinea (va incepe jucatorul 1). Pentru ca daca resetam toata aplicatia pentru a o lua de la 0 performanta era una scazuta (practic se reseta tot programul, cu tot cu pornirea LCD-ului, ceea ce dura prea mult), am ales sa colorez pixelii matricii in culoarea fundalului, astfel incat la apasarea butonului 'RESET', resetarea va fi instantanee. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | In poza de mai jos se poate vedea cum arata proiectul in faza finala: |
</note> | </note> | ||
- | + | {{ pm:prj2024:rvirtan:whatsapp_image_2024-05-31_at_20.16.05.jpeg?400 |}} | |
- | ===== Concluzii ===== | + | |
===== Download ===== | ===== Download ===== | ||
- | <note warning> | ||
- | 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*. | ||
- | </note> | ||
- | ===== Jurnal ===== | + | <note tip> |
+ | In arhiva se gaseste codul sursa al proiectului. | ||
- | <note tip> | + | {{pm:prj2024:rvirtan:tictactoe.zip|tictactoe.zip}} |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
</note> | </note> | ||
+ | |||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe *Resurse Software* şi *Resurse Hardware*. | + | Lista cu resursele folosite in vederea realizarii proiectului: |
</note> | </note> | ||
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html | + | {{pm:prj2024:rvirtan:datasheet_atmega328p.pdf|Datasheet ATmega328p}} |
+ | |||
+ | [[https://docs.arduino.cc/software/ide/#ide-v1|Documentaţie Arduino IDE]] | ||
+ | |||
+ | {{pm:prj2024:rvirtan:ili9341.pdf|Datasheet ILI9341}} | ||
+ | |||
+ | {{pm:prj2024:rvirtan:xpt2046.pdf|Datasheet XPT2046}} | ||
+ | |||
+ | [[https://www.arduino.cc/reference/en/language/functions/communication/spi/|Documentaţie SPI.h]] |