X și 0

Grupa: 335CC

Nume: Andreea Tănase

E-mail : Login to see contact info.

Introducere

  • Proiectul constă în implementarea jocului clasic de X si 0, unde cei doi jucatori vor folosi joystick-uri pentru a controla miscarea iar tabela de X și 0 va fi afisata cu ajutorul unei matrice cu LED-uri. Jucatorul al carui rand este va fi indicat prin bratul unui servomotor iar castigatorul va fi anuntat printr-un buzzer si prin colorarea matricii in culoarea jucatorului - rosu sau albastru.

Descriere generală

  • Jocul incepe prin alegerea pozitiilor jucatorilor: jucatorul 1 (ce va juca pe joystick cu culoarea rosie) si jucatorul 2 (ce va juca cu joystick cu culoarea albastra). Un servomotor va indica spre jucatorul al carui rand este iar in final desemnarea castigatorului si incheierea jocului va fi anuntata cu ajutorul unui buzzer.
  • Afisarea pe tabla de joc va fi simbolizata prin 2 culori, rosu pentru X si albastru pentru 0; cum modulul cu matrice prezinta 8×8 LED-uri, voi scala numarul lor astfel incat sa pastreze schema de 3×3 a jocului (4 leduri → scalat la o pozitie + 2 coloane 1×8 si 2 linii 8×1 care delimiteaza pozitiile).
  • In momentul finalizarii jocului, matricea se va colora in culoarea castigatorului sau in alb in cazul unei remize.
  • Concepte de Laborator Folosite:
    1. PWM: Servomotorul
    2. ADC: Joystick-ul
    3. Laboratoarele introductive: Matricea cu LED-uri
  • Schema Bloc:

  • Matricea scalata:


Hardware Design

  • Lista de Componente:
Număr Piese Denumire Piese Descriere
1 Arduino UNO R3(ATmega328p+ATmega16u2) 30 lei (Optimus Digital)
1 Matrice cu LED-uri RGB WS2812 (8×8) 60 lei (Optimus Digital)
1 Cablu USB alimentare 2 lei (Optimus Digital)
1 Sursa alimentare 3,3/5V 2 lei (Ardushop)
1 Breadboard830 3 lei (Ardushop)
1 Buzzer pasiv 3 lei (Ardushop)
65 Fire Jumper 10 lei (Ardushop)
20 Fire Dupont 7 lei (Optimus Digital)
2 Modul Joystick Biaxial Negru cu 5 pini 2 x 5.49 lei (Optimus Digital)
1 Micro Servomotor SG90 10 lei (Optimus Digital)

  • Red wins:

  • Blue wins:

  • Draw:

Software Design

Mediu de dezvoltare: Arduino IDE.

  • Fiecare casuta este reprezentata de 4 LED-uri ce iau culoarea jucatorilor - rosu sau albastru - si sunt despartite de 2 linii si 2 coloane de culoare galbena.
  • Cum indicii matricei sunt cititi serpuit, am folosit mai multe instructiuni for pentru a parcurge invers pe liniile cu numar par. Trecerea dintre o casuta la alta se face cu incrementare cu 3 a pasului.
  • Cu bratul servomotorului se indica randul jucatorului respectiv - in jos (45°) este jucatorul cu culoarea rosie si in dreapta (135°) cel cu albastru.
  • Casuta curenta pe unde se plimba jucatorul ia culoarea alba si pentru ea am implementat o functie ce face un blink pentru a se vedea mai bine unde se afla. Functia foloseste un delay de 0.2s pentru a clipi intre alb si culoarea precedenta de pe casuta (rosu, albastru sau negru).
  • Cand matricea se intalneste aceeasi culoare pe o linie sau pe o diagonala, tabla se coloreaza in culoarea castigatorului si se actioneaza si buzzerul ce indica finalul jocului; daca este remiza, tabla se coloreaza in alb.

Rezultate Obţinute

  • Am reusit sa implementez toate functionalitatile proiectului. Intentionam sa folosesc si intreruperi pentru joystick insa las aceasta imbunatatire pentru viitor.
  • Mai jos, pe prima imagine, se afla un film ce prezinta proiectul intr-o maniera dramatica.
  • In filmul alaturat se prezinta un gameplay cu cele 3 finaluri posibile: X wins, 0 wins si draw.

Concluzii

  • Cu ajutorul acestui proiect am reusit sa imi consolidez notiunile invatate la laboratoarele de PM. Varianta finala a iesit cum ma asteptam, putand fi folosit in orice circumstanta deoarece am reusit sa remediez toate bug-urile.

Download

Codul sursa:

tictactoe.zip

Jurnal

  • 22.04.2021: Au sosit piesele de la Optimus Digital si Ardushop.
  • 23.04.2021: Am incercat sa fac set-up-ul proiectului si am realizat ca matricea ce o comandasem nu poate fi folosita pentru jocul meu - Modul cu Matrice de LED-uri MAX7219 - pentru ca nu are led-uri RGB. Am plasat inca o comanda la Optimus Digital pentru Matrice cu LED-uri RGB WS2812 (8×8) si fire Dupont.
  • 25.04.2021: Am creat pagina de wiki pentru proiect. Am renuntat la ideea ca jucatorul cu X sa foloseasca 4 butoane in loc de inca un joystick pentru ca ar fi aglomerat foarte tare breadboard-ul iar jocul ar fi aratat asimetric.
  • 26.04.2021: Cu ajutorul substantei decapante am curatat pinii de pe cele 2 barete urmand mai apoi sa ii lipesc cu letconul pe matrice folosind cositor.
  • 10.05.2021: Am inceput sa testez diferite afisari pe matrice si m-a deprimat faptul ca indecsii sai sunt parcursi intr-un mod serpuit. m( Astfel, a trebuit sa reproiectez codul pentru a putea crea casutele de pe tabela si vizitarea acestora.
  • 20.05.2021: Am reusit sa implementez gameplay-ul si in plus functionaliatea de a afisa la final culoarea invingatorului.
  • 22.05.2021: Am adaugat servomotorul si buzzer-ul si am imbunatatit miscarea pe joystick.
  • 25.05.2021: Proiectul a fost definitivat si urmeaza aranjarea codului sursa pentru a elimina urmele de hardcode.
  • 29.05.2021: Tot ce tine de proiect a fost definitivat, impreuna cu pagina de wiki ce va suferi imbunatatiri pana la deadline :-D
  • 02.06.2021: Finalizare wiki.

Bibliografie și Resurse

  • Youtube:
  • Laboratoarele de pe OCW: laboratoarele 0,1,2,3,4,5,6

Documentația în format PDF 335CC_Tanase_Andreea

pm/prj2021/dbrigalda/xsi0.txt · Last modified: 2021/06/03 00:37 by andreea.tanase2611
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0