This shows you the differences between two versions of the page.
pm:prj2022:apredescu:x-si-0 [2022/05/24 01:03] elvin.ibraim [Hardware Design] |
pm:prj2022:apredescu:x-si-0 [2022/06/01 23:02] (current) elvin.ibraim [Download] |
||
---|---|---|---|
Line 27: | Line 27: | ||
**Schema electrica** | **Schema electrica** | ||
- | ===== Software Design ===== | + | {{:pm:prj2022:apredescu:ibraimelvinschemaelectrica.png?769|}} |
+ | ^ Ecran LCD ^ Arduino UNO ^ | ||
+ | | VSS | GND | | ||
+ | | VDD | 5V | | ||
+ | | V0 | GND | | ||
+ | | RS | 12 | | ||
+ | | RW | GND | | ||
+ | | E | 11 | | ||
+ | | D4 | 6 | | ||
+ | | D5 | 5 | | ||
+ | | D6 | 4 | | ||
+ | | D7 | 3 | | ||
+ | | A | 3.3V | | ||
+ | | K | GND | | ||
+ | ^ Senzor IR ^ Arduino UNO ^ | ||
+ | | Power | 5V | | ||
+ | | GND | GND | | ||
+ | | Out | 8 | | ||
+ | ^ Matrice Led ^ Arduino UNO ^ | ||
+ | | VCC | 5V | | ||
+ | | GND | GND | | ||
+ | | DIN | 7 | | ||
+ | | CS | 5 | | ||
+ | | CLK | 6 | | ||
+ | |||
+ | ===== Software Design ===== | ||
- | <note tip> | ||
Descrierea codului aplicaţiei (firmware): | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * mediu de dezvoltare: Arduino IDE 1.8.19 |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * librării şi surse 3rd-party: |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * LiquidCrystal.h (ecran LCD) |
- | * (etapa 3) surse şi funcţii implementate | + | * MaxMatrix.h (matricea led 8x8) |
- | </note> | + | * IRremote.h (telecomanda infrarosu) |
+ | * algoritm: | ||
+ | In urma implementarii proiectului am folosit urmatoarele functii: | ||
+ | - checkWin: verifica, dupa o mutare, daca a castigat unul dintre jucatori; intoarce 0 daca nu si 1 sau 2 daca a castigat unul dintre jucatori. | ||
+ | - boardReset: reseteaza matricea de leduri. | ||
+ | Se folosesc butoanele de la 1 la 9 de pe telecomanda si butonul OK pentru inceperea unui joc. Fiecare mutare valida (pe pozitii care nu au fost folosite) incrementeaza numarul de mutari totale si se modifica variabila start (poate avea 3 valori: 0 cand nu a inceput jocul, 1 daca urmeaza jucatorul 1 si 2 daca urmeaza jucatorul 2). Functia checkWin se apeleaza dupa ce numarul total de mutari trece de 5 (nu se poate castiga pana atunci). La sfarsitul unui joc se afiseaza pe LCD castigatorul sau "DRAW" in caz de remiza si se reseteaza matricea de LED-uri. De asemenea, se tine cont si de scor, care va fi afisat in timpul jocului. | ||
+ | Am ales un model pentru X si unul pentru 0, modele care se vor afisa pe matrice in functie de inputul primit de la telecomanda, pe pozitia corespunzatoare. | ||
+ | Inputul de la telecomanda este prelucrat intr-un switch cu toate codurile de care avem nevoie de la ea. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | **Stare initiala** | ||
- | <note tip> | + | {{:pm:prj2022:apredescu:stareinitiala.jpeg?400|}} |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | ||
- | ===== Download ===== | + | **Stare intermediara** |
- | <note warning> | + | {{:pm:prj2022:apredescu:stareintermediara.jpeg?400|}} |
- | 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ă ;-). | + | |
+ | |||
+ | **Stare finala cu castigator** | ||
+ | |||
+ | {{:pm:prj2022:apredescu:starefinalacastigator.jpeg?400|}} | ||
+ | |||
+ | |||
+ | **Stare finala remiza** | ||
+ | |||
+ | {{:pm:prj2022:apredescu:starefinaladraw.jpeg?400|}} | ||
+ | ===== Concluzii ===== | ||
+ | Demo: | ||
+ | https://youtube.com/shorts/tOcB7iuh8jg?feature=share | ||
+ | ===== Download ===== | ||
+ | https://github.com/elvinibraim1/arduino/blob/main/TicTacToe.ino | ||
- | 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 ===== | ===== Jurnal ===== |