This is an old revision of the document!
Tetris
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ă
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.
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