This is an old revision of the document!


Tetris

  • Student: Giuglan Denisa-Cristina
  • Grupa: 334CD

Introducere

  • Proiectul meu aduce jocul Tetris din lumea virtuala intr-un format fizic, construit cu ajutorul unei placi Arduino. Ideea de baza este simpla: piese de diferite forme cad pe o matrice verticala de LED-uri, iar jucatorul trebuie sa le potriveasca perfect pentru a crea linii orizontale. Atunci cand o linie este completa, ea dispare, lasand loc pentru noi piese.
  • Am pornit de la dorinta de a vedea cum pot transforma niste componente electronice obisnuite intr-o consola de jocuri functionala. Mi-am dorit sa vad daca pot sa fac toate aceste piese sa se miste fluid, sa afisez scorul in timp real si sa adaug muzica de fundal, totul dintr-un singur cod.
  • Pentru mine, acest proiect este cea mai buna metoda de a vedea cum teoria de la cursuri se aplica in realitate. Am invatat cum sa conectez corect senzorii (joystick, buton) si cum sa organizez codul software pentru a controla hardware-ul.

Descriere generală

  • Control (Input): Jucatorul foloseste un joystick pentru a muta piesele la stanga, la dreapta sau in jos si un buton separat pentru a le roti. Aceste miscari sunt trimise ca semnale catre placa Arduino.
  • Procesare (Logica): Placa Arduino Uno este “creierul” care ruleaza jocul. Ea decide cat de repede cad piesele, verifica daca s-a format o linie si calculeaza scorul.
  • Afisare (Output): Jocul se vede pe un modul format din 4 matrice de LED-uri (8×32 puncte in total), iar informatiile suplimentare, precum scorul, sunt afisate separat pe un ecran OLED.
  • Sunet (Feedback): Un buzzer reda muzica de fundal si scoate sunete scurte atunci cand jucatorul castiga puncte sau pierde jocul.

Hardware Design

Componente folosite:

  • Arduino Uno: Placa de baza pentru controlul intregului sistem.
  • Modul 4 matrice LED MAX7219 (SPI): Suprafata principala de joc (8×32 pixeli).
  • Display OLED (I2C): Pentru afisarea scorului si a mesajelor.
  • Joystick: Pentru controlul directiei de deplasare a pieselor.
  • Buton (Push-button): Pentru functia de rotire a pieselor.
  • Buzzer (PWM): Pentru feedback sonor si melodia Tetris.
  • Rezistenta 220 Ω: Pentru protectia circuitului buzzer-ului.
  • Breadboard si fire de legatura: Pentru realizarea conexiunilor intre componente.

In tabelul de mai jos este prezentata configuratia pinilor utilizati, alaturi de justificarea tehnica a alegerii acestora:

Componenta Pin Componenta Pin Arduino Justificare Tehnica
OLED VCC 5V Alimentare modul ecran.
GND GND Masa comuna a circuitului.
SDA A4 Serial Data pentru I2C. Pin dedicat hardware pe Arduino Uno.
SCL A5 Serial Clock pentru I2C. Sincronizeaza transferul de date.
Matrice LED VCC 5V Alimentare module MAX7219.
GND GND Masa comuna.
DIN D11 MOSI (SPI). Transfer rapid de date catre cele 256 de LED-uri.
CS / LOAD D10 Chip Select. Activeaza scrierea pe modulele LED.
CLK D13 SCK (SPI Clock). Sincronizeaza bitii in protocolul SPI.
Joystick VCC 5V Alimentare pentru potentiometrele interne.
GND GND Masa comuna.
VRX A0 Intrare Analogica. Citeste axa X pentru deplasare stanga/dreapta.
VRY A1 Intrare Analogica. Citeste axa Y pentru cadere rapida.
SW D4 Intrare Digitala pentru butonul intern al joystick-ului.
Push Button P1 D2 Intrare Digitala. Suporta intreruperi hardware (Interrupts).
P2 5V Sursa de semnal pentru logica de tip Active High.
Buzzer (+) D3 Pin PWM. Genereaza frecventele audio.
(-) GND Masa comuna.

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

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2026/theodor_ioan.buliga/denisa.giuglan.1779474761.txt.gz · Last modified: 2026/05/22 21:32 by denisa.giuglan
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