This shows you the differences between two versions of the page.
pm:prj2023:dene:shogi [2023/05/22 03:36] adrian_emanuel.dicu [Hardware Design] |
pm:prj2023:dene:shogi [2023/05/30 06:37] (current) adrian_emanuel.dicu [Download] |
||
---|---|---|---|
Line 35: | Line 35: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | **Mediu de dezvoltare:** Arduino IDE | ||
+ | |||
+ | **Biblioteci si surse 3rd-party:** | ||
+ | * "SPFD5408_Adafruit_GFX.h" pentru grafica | ||
+ | * "SPFD5408_Adafruit_TFTLCD.h" pentru ecranul LCD TFT | ||
+ | * "SPFD5408_TouchScreen.h" pentru touchscreen | ||
- | <note tip> | ||
- | FIXME Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | ||
* librării şi surse 3rd-party (e.g. Procyon AVRlib) | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | ||
* algoritmi şi structuri pe care plănuiţi să le implementaţi | * algoritmi şi structuri pe care plănuiţi să le implementaţi | ||
* (etapa 3) surse şi funcţii implementate | * (etapa 3) surse şi funcţii implementate | ||
- | </note> | ||
+ | **Implementare:** | ||
+ | * void setup() | ||
+ | * void loop() -> asteapta dupa o mutare, calculeaza pozitia unde s-a apasat, verifica daca este o mutare valida, iar in caz afirmativ executa mutarea, rescriind tabla | ||
+ | * void drawBoard() -> deseneaza gridul tablei, piesele si pozitiile unde se poate efecta o mutare valida | ||
+ | * bool isValidSelection(int posX, int posY, char currentPlayer) -> determina daca selectia piesei din casuta (posX, posY) de catre currentPlayer este valida | ||
+ | * bool isSelectedBox(int posX, int posY, int selectedX, int selectedY) verifica daca (posX, posY) == (selectedX, selectedY) | ||
+ | * char pieceType(char piece) -> returneaza jucatorul ('A' sau 'B') care detine piece. Returneaza o valoare diferita daca piece nu e o piesa valida | ||
+ | * void endGame(char player) -> afiseaza ecranul final | ||
+ | * void movePiece(int startX, int startY, int endX, int endY) -> muta piesa din casuta (startX, startY) in casuta (endX, endY) (considera ca mutarea este valida) | ||
+ | * bool isValidMove(int fromX, int fromY, int toX, int toY) -> determina daca mutarea piesei din casuta (fromX, fromY) in casuta (toX, toY) este valida | ||
+ | * bool checkLine(int fromX, int fromY, int toX, int toY) -> determina daca toate casutele dintre (fromX, fromY) si (toX, toY) sunt libere | ||
+ | * TSPoint waitTouch() -> asteapta o apasare a ecranului si returneaza coordonata punctului apasat | ||
+ | * void IntroScreen() -> genereaza pagina de start a jocului | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | {{:pm:prj2023:dene:shogi1.jpeg?300|}}{{:pm:prj2023:dene:shogi2.jpeg?300|}} |
- | FIXME Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
===== Concluzii ===== | ===== Concluzii ===== | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | Arhiva care contine codul sursa, bibliotecile folosite, schema electrica, diagrama bloc, etc |
- | FIXME 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> | + | {{pm:prj2023:dene:arhivapm.zip | Shogi.zip}} |
- | FIXME Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | **Resurse Software** |
- | FIXME Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * Laburile de PM =) |
- | </note> | + | * [[https://github.com/JoaoLopesF/SPFD5408 | Biblioteca pentru ecranul TFT LCD Touchscreen]] |
+ | * [[https://www.hackster.io/Sergey_Urusov/arduino-mega-chess-d54383 | Pentru inspiratie]] | ||
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | **Resurse Hardware** |
+ | * [[https://www.conexelectronic.ro/ro/accesorii-computer-mono-placa/16632-DISPLAY-ARDUINO-TFT-LCD-2-4-INCH.html | Display Arduino TFT LCD 2.4']] | ||
+ | * [[https://www.conexelectronic.ro/ro/computer-mono-placa/4671-ARDUINO-UNO-R3-ORIGINAL.html?search_query=arduino+uno&results=11 | Arduino Uno R3]] | ||
+ | *// Arduino UNO pinout // | ||
+ | {{ :pm:lab:uno.jpg?300 |}} |