This is an old revision of the document!


Tetris

Vlad Andra, 331CC

Introducere

În acest proiect voi implementa un joc de Tetris controlat de un joystick. Jocul va fi afișat pe o matrice de LED-uri 8×8.
Detaliile jocului (scor, game over etc.) se vor afișa pe un display LCD 16×2.
De fiecare dată când se va face un rând în jocul de Tetris, buzzer-ul va emite un sunet de confirmare.
Am ales acest proiect nu numai pentru că este un joc retro foarte drăguț, ci și pentru că am putut include multe dintre informațiile învățate la laborator, precum lucrul cu GPIO, SPI, I2C și multe altele. :D

Descriere generală

În jocul nostru, vom avea nevoie de joystick pentru rotirea pieselor. Atunci când se va face un rând, se va adăuga un punctaj la scorul total afișat pe display. De asemenea, atunci când jocul se va termina, matricea LED va emite un semnal luminos și buzzerul va emite un sunet pentru a semnala finalizarea jocului.

Schema bloc este următoarea:

Hardware Design

Piese utilizate:

  • Arduino MEGA 2560
  • Modul cu Matrice LED MAX7219 (versiunea SMD) - matrice de LED-uri 8×8
  • LCD 2004 cu Backlight Albastru și Interfață I2C
  • Modul Joystick Biaxal
  • Buzzer pasiv

Modulul de comunicație MAX7219 mi s-a părut interesant, deoarece acesta folosește protocolul SPI pentru comenzi ca și MOSI, fără MISO. Acesta facilitează controlul unei matrice de LED-uri folosind un număr mic de pini. Interesanți sunt pinii DIN și CS:

  • DIN = Data In, transmite date în mod serial (câte 1 bit) către MAX7219, comenzi precum ce LED-uri să aprindă.
  • CS = Chip Select, însă nu funcționează chiar ca Slave Select-ul cu care eram obișnuiți. Pinul este folosit să marcheze când ar trebui începute citirea datelor. Este setat la 0 ca să fie începută sesiunea de comunicare (să accepte date pe DIN) și la 1 ca să se încheie comunicarea.

Pinul DOUT al modulului este folosit dacă dorim să conectăm mai multe matrice de LED-uri între ele.

Schema electrică este următoarea:

În stadiul curent al proiectului, am conectat printr-un breadboard și testat toate componentele pentru a mă asigura că funcționează corespunzător. Cu toate acestea, am considerat că ar fi mai potrivit însă pentru un joc să conectez piesele pe o bucată de plexiglas, pentru a avea tot ce am nevoie într-un mod accesibil pentru utilizator. A fost necesar să îmi mai comand anumite piese și mai multe fire, motiv pentru care nu am hardware-ul încă asamblat, așadar pozele urmează să fie atașate ulterior. De asemenea, plănuiesc să conectez proiectul la o baterie.
Pentru a testa faptul că funcționează componentele, am folosit următoarele resurse: [0], [1], [2]. Am folosit bibliotecile LiquidCrystal_I2c și LedControl, însă voi detalia mai mult despre acestea la partea de software.

Software Design

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)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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.

Jurnal

25.04.2024 - descrierea proiectului
03.05.2024 - adăugarea schemei bloc și a componentelor hardware
12.05.2024 - începere realizare hardware 15.05.2024 - realizarea schemei electrice și descrierea stadiului hardware

Bibliografie/Resurse

[0] Interfacing Buzzer to Arduino: https://www.instructables.com/Interfacing-Buzzer-to-Arduino/
[1] Arduino - LCD I2C: https://arduinogetstarted.com/tutorials/arduino-lcd-i2c
[2] How to control 8×8 dot Matrix with MAX7219 and Arduino: https://youtu.be/SGjQ-E3UD7A

Export to PDF

pm/prj2024/fgul/andra.vlad.1715939869.txt.gz · Last modified: 2024/05/17 12:57 by andra.vlad
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