Differences

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

Link to this comparison view

pm:prj2022:dene:tetris [2022/04/26 12:33]
dorian.verna created
pm:prj2022:dene:tetris [2022/05/27 23:49] (current)
dorian.verna [Rezultate Obţinute]
Line 20: Line 20:
 ==== Schema bloc ==== ==== Schema bloc ====
  
 +{{:​pm:​prj2022:​dene:​arduino.png?​800|}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 33: Line 34:
   * Fire   * Fire
   * Servomotor   * Servomotor
 +
 +{{:​pm:​prj2022:​dene:​schema.png?​700|}}
 +
 +== Schema pentru o matrice ==
 +{{:​pm:​prj2022:​dene:​better_matrix_view_verna_dorian.png?​500|}}
 +== Schema pentru tot ansamblul de 4 matrice ==
 +{{:​pm:​prj2022:​dene:​matrix_whole_view_verna_dorian.png?​500|}}
 +== Schema pentru butoane ==
 +{{:​pm:​prj2022:​dene:​buttons_verna_dorian.png?​500|}}
 +== Schema pentru display ==
 +{{:​pm:​prj2022:​dene:​display_verna_dorian.png?​500|}}
 +== Schema pentru microcontroller,​ potentiometru si servomotor ==
 +{{:​pm:​prj2022:​dene:​atmega_pot_servo_verna_dorian.png?​500|}}
  
 ===== Software Design ===== ===== Software Design =====
  
-<note tip> +  * Pentru dezvoltarea aplicatiei am folosit Arduino IDE 
-Descrierea codului aplicaţiei (firmware)+  * Bibliotecile pe care le-am folosit suntMD_MAX72xx.h si SPI.h pentru matricele de LED-uri, LiquidCrystal_I2C.h si Wire.h pentru LCD 
-  * mediu de dezvoltare ​(if any) (e.g. AVR StudioCodeVisionAVR+  * Am folosit o matrice mare de 8x32 pentru a reprezenta matricele de LED-uri. Am folosit o structura de date pentru a retine pozitiile din matrice unde se regaseste o piesa care se afla in miscare. 
-  * librării şi surse 3rd-party (e.gProcyon AVRlib) + 
-  * algoritmi şi structuri ​pe care plănuiţi să le implementaţi +=== Detalii Implementare === 
-  * (etapa 3surse şi funcţii implementate +Am inceput proiectul cu pasi mici, primul a fost generarea random a pieselor. Dupa acest pas, am inceput sa implementez modul in care coboara acestea pe matricea de LED-uri, urmand sa se opreasca atunci cand ajung la baza matricei. Am folosit o structura ​(moving_piecepentru a retine pozitiile pe care le detine o piesa in miscare pe matricea mare de LED-uri ​(practicpentru a face piesa sa coboare pe matrice, incrementez coloanele aferente campurilor din moving_piece). Pe matricea mare care simuleaza matricea de LED-uri, 0 inseamna spatiu liber, 1 inseamna piesa care s-a oprit, iar 2 inseamna piesa care inca se misca. Matricea aceasta este afisata tot timpul in loop pe matricea fizica. Pe matricea fizica pot sa setez doar cate un rand intreg pe fiecare din cele 4 matrice care intra in componenta sa. 
-</​note>​+ 
 +Urmatorul pas in implementare consta in implementarea utilitatii butoanelor. Am 5 butoane in total, dintre care 4 le folosesc pentru miscarea pieselor. Primele 2 butoane de pe breadboard, cele pentru miscarea stanga-dreapta a piesei, apeleaza, atunci cand sunt apasate, functiile aferente care verifica daca se poate realiza miscarea stanga-dreapta a piesei, iar in caz afirmativ, decrementez si incrementez randul elementelor din moving_piece. 
 + 
 +Dupa aceea, a trebuit a implementez rotirea pieselor pentru urmatoarele butoane ​(rotire stanga, respectiv rotire dreapta)Ca dificultate,​ aceasta a fost cea mai grea parte din tema. Practic, aici folosesc o matrice auxiliara unde efectuez rotirea, iar daca aceasta este posibila, atunci translatez pozitiile care vor fi ocupate dupa rotire de piesa in matricea originala. Apoi am implementat stergerea unor linii si shiftarea in jos a liniilor de deasupra
 + 
 +Dupa aceea, am conectat display-ul LCD si am facut posibila afisarea unor mesaje precum cel care afiseaza scorul ​pe ecran, urmand ca, mai apoi, sa introduc si potentiometrul ​care sa faca posibila alegerea dificultatii ​(numar de linii care trebuie sterse si viteza piese). 
 + 
 +La sfarsit de tot am introdus si servomotorul pe care l-am pus intr-o cutie. In momentul in care se castiga jocul, servomotorul deschide cutia si jucatorul isi poate lua premiul.
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Proiectul arata in felul urmator:
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
 +{{:​pm:​prj2022:​dene:​verna_dorian_poza_proiect.jpeg?​600|}}
 +
 +Mai jos este un demo:
 +
 +  * https://​drive.google.com/​file/​d/​1kuXiZmQBcJuJSCksjTUPsMBVEaROCct0/​view?​usp=sharing
 ===== Concluzii ===== ===== Concluzii =====
  
 +Am intalnit o serie de concepte noi in timpul realizarii proiectului. Am invatat cum sa conectez cele 4 matrice la microcontroller si sa realizez operatii cu servomotorul si display-ul.
 +Mare parte din proiect a constat in programarea jocului, acolo am intampinat si cele mai mari dificultati,​ dar per total consider ca a fost o experienta reusita:)
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Mai jos este link-ul catre repo-ul meu de github unde am realizat implementarea proiectului:
-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**. +
-</​note>​+
  
 +  * https://​github.com/​dorianverna17/​Tetris
 ===== Jurnal ===== ===== Jurnal =====
  
 +  * 12.05 - alegere tema
 +  * 15.05 - 16.05 - cumparare piese
 +  * 15.05 - realizare miscare piese pe matrice
 +  * 17.05 - completare joc
 +  * 18.05 - conectare display, potentiometru
 +  * 19.05 - realizare mecanism servomotor si legare la microcontroller
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +   * https://​ocw.cs.pub.ro/​courses/​pm 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +   ​https://​create.arduino.cc/​projecthub/​akshayjoseph666/​interface-i2c-16x2-lcd-with-arduino-uno-just-4-wires-273b24 
-</note>+   * https://​docs.arduino.cc/​learn/​electronics/​servo-motors
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
  
pm/prj2022/dene/tetris.1650965630.txt.gz · Last modified: 2022/04/26 12:33 by dorian.verna
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