Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:avaduva:tetrismatrix [2021/06/01 02:14]
stefan_andrei.popa
pm:prj2021:avaduva:tetrismatrix [2021/06/01 02:29] (current)
stefan_andrei.popa
Line 1: Line 1:
 ====== Tetris Matrix ====== ====== Tetris Matrix ======
  
-Autor: [[mailto: stefan_andrei.popa@stud.acs.upb.ro | Popa Ștefan-Andrei]]+Autor: [[mailto: stefan_andrei.popa@stud.acs.upb.ro | Popa Ștefan-Andrei ​333CC]]
  
 ===== Introducere ===== ===== Introducere =====
Line 22: Line 22:
   * Buzzer audio   * Buzzer audio
   * Materiale auxiliare pentru realizarea matricii (carton, sticlă acrilică etc.)   * Materiale auxiliare pentru realizarea matricii (carton, sticlă acrilică etc.)
 +
 +==== Schema bloc====
 +
 +{{pm:​prj2021:​avaduva:​schema-tetris-matrixz.png}}
  
 ==== Schema electrica==== ==== Schema electrica====
Line 27: Line 31:
 {{pm:​prj2021:​avaduva:​schema_electrica_tetrismatrix.png?​750}} {{pm:​prj2021:​avaduva:​schema_electrica_tetrismatrix.png?​750}}
  
-LED-urile se folosesc de 3 canale: **VCC** (5V), **GND** ​si un canal de Data **(D0)**. Pentru coordonarea LED-urilor, ​ma folosesc de pinul **D7**, ​avand legata ​rezistenta ​de **330 ohmi**. Pentru a adresa ​secvential ​LED-urilor, acestea sunt legate ​in serie. ​Intre **VCC** ​si **GND** am legat un condensator de **1000uF**. Speaker-ul este legat la **D13** ​si la **GND**. Pentru a controla ​miscarile ​obiectelor, am conectate ​3 butoane: butonul de //​LEFT-DOWN//​ conectat la **D2**, butonul de //DOWN// conectat la **D8** ​si butonul de //​RIGHT-DOWN//​ conectat la **D12**. Butoanele sunt legate fiecare la o rezistenta ​de **330 ohmi** fiecare.+LED-urile se folosesc de 3 canale: **VCC** (5V), **GND** ​și un canal de Data **(D0)**. Pentru coordonarea LED-urilor, ​mă folosesc de pinul **D7**, ​având legată ​rezistență ​de **330 ohmi**. Pentru a adresa ​secvențial ​LED-urilor, acestea sunt legate ​în serie. ​Între ​**VCC** ​și **GND** am legat un condensator de **1000uF**. Speaker-ul este legat la **D13** ​și la **GND**. Pentru a controla ​mișcările ​obiectelor, am conectat ​3 butoane: butonul de //​LEFT-DOWN//​ conectat la **D2**, butonul de //DOWN// conectat la **D8** ​și butonul de //​RIGHT-DOWN//​ conectat la **D12**. Butoanele sunt legate fiecare la o rezistență ​de **330 ohmi** fiecare.
  
 ===== Software Design ===== ===== Software Design =====
  
-Descrierea codului ​aplicatiei:+Descrierea codului ​aplicației:
  
-Codul se foloseste ​de bilbioteca ​**FastLED.h** pentru a comunica cu matricea de leduri. Pentru a spatializa functiile ​jocului, am realizat mai multe fisiere ​de tip header pe care le-am reunit ​in fisierul ​**tetris-fastled.ino** : +Codul se folosește ​de biblioteca ​**FastLED.h** pentru a comunica cu matricea de leduri. Pentru a spațializa funcțiile ​jocului, am realizat mai multe fișiere ​de tip header pe care le-am reunit ​în fișierul ​**tetris-fastled.ino** : 
-  * **Tetris.h** - contine ​toate functiile ​logice ale jocului +  * **Tetris.h** - conține ​toate funcțiile ​logice ale jocului 
-  * **Paint.h** - contine ​toate functiile ​care se ocupa cu colorarea LED-urilor +  * **Paint.h** - conține ​toate funcțiile ​care se ocupă ​cu colorarea LED-urilor 
-  * **Music.h** - contine ​toate functiile si notele muzicale pentru coloana ​sonora +  * **Music.h** - conține ​toate funcțiile și notele muzicale pentru coloana ​sonoră 
-  * **Constants.h** - contine ​toate constantele jocului (ex. inaltimea si lungimea matricii de joc)+  * **Constants.h** - conține ​toate constantele jocului (ex. înălțimea și lungimea matricii de joc)
  
-Jocul incepe initial ​cu o tabla libera. Programul alege la intamplare ​o culoare ​si un tetromino pe care il instantiaza ​pe tablaIn prezent, tetrominourile nu pot fi rotite, ci doar deplasate pe tabla. Prin butoanele fizice, ​jucatorul ​poate sa miste tetrominoul ​in jos, dreapta-jos sau stanga-jos. Programul se asigura ​printr-un sistem de coliziuni ca obiectele ​sa nu iasa din scena sau sa se suprapunaOdata ce un tetromino nu mai poate sa se deplaseze ​in jos, se valideaza acest lucru si un nou obiect este instantiat in scena. De fiecare ​data cand un tetromino se opreste, programul se asigura daca exista ​linii complete, iar in acel caz, le sterge ​pentru a face loc in scena. Programul se foloseste ​de o matrice de tip **char** pentru a coordona jocul, iar la finalul ​fiecarui ​frame, matricea este proiectata ​pe ecranul de LED-uri.+Jocul începe inițial ​cu o tablă liberă. Programul alege la întamplare ​o culoare ​și un tetromino pe care îl instanțiaza ​pe tablăÎn prezent, tetrominourile nu pot fi rotite, ci doar deplasate pe tablă. Prin butoanele fizice, ​jucătorul ​poate să miște ​tetrominoul ​în jos, dreapta-jos sau stânga-jos. Programul se asigură ​printr-un sistem de coliziuni ca obiectele ​să nu iasă din scenă ​sau să se suprapunăOdată ​ce un tetromino nu mai poate să se deplaseze ​în jos, se valideaza acest lucru și un nou obiect este instanțiat în scenă. De fiecare ​dată când un tetromino se oprește, programul se asigură dacă există ​linii complete, iar în acel caz, le șterge ​pentru a face loc în scenă. Programul se folosește ​de o matrice de tip **char** pentru a coordona jocul, iar la finalul ​fiecărui ​frame, matricea este proiectată ​pe ecranul de LED-uri.
  
 Link cod: [[https://​github.com/​AndreiPopa21/​tetris-matrix | https://​github.com/​AndreiPopa21/​tetris-matrix ]] Link cod: [[https://​github.com/​AndreiPopa21/​tetris-matrix | https://​github.com/​AndreiPopa21/​tetris-matrix ]]
  
-===== Rezultate ​si concluzii =====+===== Rezultate ​și concluzii =====
  
 Link demo: [[https://​drive.google.com/​file/​d/​15GRXf-JM5zMjwYnpMa8NyB-IQpWfngeq/​view?​usp=sharing | demo]] Link demo: [[https://​drive.google.com/​file/​d/​15GRXf-JM5zMjwYnpMa8NyB-IQpWfngeq/​view?​usp=sharing | demo]]
Line 50: Line 54:
 {{pm:​prj2021:​avaduva:​tetris-matrix-2.jpeg?​600}} {{pm:​prj2021:​avaduva:​tetris-matrix-2.jpeg?​600}}
  
-In realizarea acestui proiect, principala provocarea a fost sudarea firelor ​in realizarea matricii de LED-uri. ​Fara experienta ​anterioara, m-am confruntat adeseori cu multe lipituri "​reci"​ sau cu componente arse, lucru care a ingreunat ​mult procesul de dezvoltare. Vizibil ​in poza este ca nu toate liniile de LED-uri ​participa, multe dintre acestea fiind afectate ​in procesul de sudare. Ca software, jocul nu este implementat 100%, dar prezinta ​principalele caracteristici ​si mecanici ale jocului original. ​Desii sunt 6 linii de LED-uri active, acestea pot fi oricand ​extinse ca numar, iar software-ul ​prezinta aceasta ​flexibilitate. ​+În realizarea acestui proiect, principala provocarea a fost sudarea firelor ​în realizarea matricii de LED-uri. ​Fără ​experiență ​anterioara, m-am confruntat adeseori cu multe lipituri "​reci"​ sau cu componente arse, lucru care a îngreunat ​mult procesul de dezvoltare. Vizibil ​în poză este că nu toate liniile de LED-uri ​participă, multe dintre acestea fiind afectate ​în procesul de sudare. Ca software, jocul nu este implementat 100%, dar prezintă ​principalele caracteristici ​și mecanici ale jocului original. ​Deși sunt 6 linii de LED-uri active, acestea pot fi oricând ​extinse ca număr, iar software-ul ​prezintă această ​flexibilitate. ​
  
 Resurse: {{pm:​prj2021:​avaduva:​stefan_andrei_popa_333cc_resurse.zip}} Resurse: {{pm:​prj2021:​avaduva:​stefan_andrei_popa_333cc_resurse.zip}}
pm/prj2021/avaduva/tetrismatrix.1622502843.txt.gz · Last modified: 2021/06/01 02:14 by stefan_andrei.popa
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