X și 0

Introducere

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 î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 generală

Proiectul este dezvoltat pe o plăcuță Arduino Uno R3 ATMega328P și este afișat pe un ecran LCD sub forma unei matrici 3×3.

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 ș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.

  • Joystick: Permite jucătorilor să se deplaseze pe tabla de joc și să selecteze poziția preferată;
  • Arduino UNO: Plăcuța pentru procesarea din spatele jocului;
  • Display LCD: Afișează tabla de joc și scorul jucătorilor;
  • LED-uri: Fiecare jucător are asociat un led de o anumită culoare;
  • Buzzer: Acesta va scoate un sunet la fiecare mutare a jucătorilor.

Hardware Design

Listă de piese necesare pentru acest proiect

  • Arduino Uno R3 ATmega328P
  • Ecran LCD 1.8” SPI
  • Modul Joystick PS2 compatibil Arduino
  • Buzzer
  • Breadboard
  • Led-uri

Schemă componente

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.

2. Conectarea Joystick-ului:
- GND la GND de pe Arduino.
- 5V la 5V de pe Arduino.
- VRx la A0 de pe Arduino.
- VRy la A1 de pe Arduino.
- SW la A2 de pe Arduino.

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

Mediu de dezvoltare: PlatformIO

Biblioteca utilizata: st7735.h

Descriere implementare

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.

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.

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.

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.

Rezultate Obţinute

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.

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

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

pm/prj2024/fstancu/dragos.enachescu.txt · Last modified: 2024/05/27 00:40 by dragos.enachescu
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