Differences

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

Link to this comparison view

pm:prj2021:apredescu:tower-stack [2021/06/01 22:49]
bianca_ana.rusu [Rezultate obținute]
pm:prj2021:apredescu:tower-stack [2021/06/02 20:39] (current)
bianca_ana.rusu [Download]
Line 13: Line 13:
 Piesele vin de sus, iar poziția lor poate fi controlată folosind un accelerometru. Piesele încep să cadă după ce jucătorul apasă pe un buton. Piesele vin de sus, iar poziția lor poate fi controlată folosind un accelerometru. Piesele încep să cadă după ce jucătorul apasă pe un buton.
  
-Un buzzer va fi folosit pentru a semnala că piesa curentă a fost așezată pe turn.+Un buzzer va fi folosit pentru a semnala că piesa curentă ​nu a fost așezată ​corespunzător ​pe turn.
  
 ==== Schemă bloc ==== ==== Schemă bloc ====
Line 32: Line 32:
  
 {{:​pm:​prj2021:​apredescu:​hardware-b-rusu-2.jpeg?​500|}} {{:​pm:​prj2021:​apredescu:​hardware-b-rusu-2.jpeg?​500|}}
-==== Schema ​electrica ​====+==== Schema ​electrică ​====
 {{:​pm:​prj2021:​apredescu:​schema-el-bianca-rusu.png?​700|}} {{:​pm:​prj2021:​apredescu:​schema-el-bianca-rusu.png?​700|}}
  
 ===== Software design ===== ===== Software design =====
-Am folosit Arduino IDE si urmatoarele ​biblioteci:+Am folosit Arduino IDE și următoarele ​biblioteci:
   * Adafruit_MPU6050 pentru accelerometru   * Adafruit_MPU6050 pentru accelerometru
   * MCUFRIEND_kbv pentru LCD   * MCUFRIEND_kbv pentru LCD
  
-Implementarea este bazata ​pe exemplele din bibliotecile de mai sus si exemplul din Arduino IDE tone digital pentru buzzer. +Implementarea este bazată ​pe exemplele din bibliotecile de mai sus și exemplul din Arduino IDE tone digital pentru buzzer. 
-Pentru a folosi butonul ca input am utilizat ​intrerupere ​pe PCINT0. ​+Pentru a folosi butonul ca input am utilizat ​întrerupere ​pe PCINT0. ​
  
-Accelerometrul ​comunica ​folosind I2C, insa display-ul folosea pin-ul A4(SDA) pentru LCD_RST. A trebuit ​sa reconfigurez LCD-ul ​sa foloseasca ​pin-ul 13 in loc de A4. +Accelerometrul ​comunică ​folosind I2C, însă ​display-ul folosea pin-ul A4(SDA) pentru LCD_RST. A trebuit ​să reconfigurez LCD-ul ​să folosească ​pin-ul 13 în loc de A4. 
-Pentru a retine ​blocurile am folosit o structura si mai apoi blocurile construite le-am pastrat intr-un vector. Blocurilor li se asociaza ​o culoare random. Am implementat ​si functionalitate ​de scor si de game over+Pentru a reține ​blocurile am folosit o structură și mai apoi blocurile construite le-am păstrat într-un vector. Blocurilor li se asociază ​o culoare random. Am implementat ​și funcționalitate ​de scor și de game over.
- +
-LCD-ul are un refresh rate destul de mic astfel incat daca se face clear la ecran la fiecare frame apare un efect de imagine sacadata. De aceea atunci cand se misca un bloc, practic se coloreaza cu negru pozitia anterioara si apoi se deseneaza normal la pozitia noua.+
  
 +LCD-ul are un refresh rate destul de mic astfel încât dacă se face clear la ecran la fiecare frame apare un efect de imagine sacadată. De aceea atunci când se mișcă un bloc, practic se colorează cu negru poziția anterioară și apoi se desenează normal la poziția nouă.
  
 ==== Gameplay ==== ==== Gameplay ====
  
-Scopul jocului e sa se construiasca ​un turn cat mai inaltJucatorul ​are la dispozitie ​un bloc care apare la o pozitie ​random ​in partea de sus a scenei ​si il poate muta stanga-dreapta cu ajutorul accelerometrului. Pentru a lansa blocul, se apasa butonul. Jocul se termina in momentul ​in care jucatorul ​nu reuseste sa puna blocul corect deasupra turnului ​si acesta cade si iese din scena, moment ​in care apare un text cu "Game over" ​si se aude si o melodie de la buzzer. Pentru a se relua jocul se apasa din nou pe buton.+Scopul jocului e să se construiască ​un turn cât mai înaltJucătorul ​are la dispoziție ​un bloc care apare la o poziție ​random ​în partea de sus a scenei ​și îl poate muta stânga-dreapta cu ajutorul accelerometrului. Pentru a lansa blocul, se apasă ​butonul. În momentul în care turnul este prea înalt, acesta este deplasat în jos. Jocul se termină în momentul ​în care jucătorul ​nu reușește să pună blocul corect deasupra turnului ​și acesta cade și iese din scenă, moment ​în care apare un text cu "Game over" ​și se aude și o melodie de la buzzer. Pentru a se relua jocul se apasă ​din nou pe buton.
  
 ===== Rezultate obținute ===== ===== Rezultate obținute =====
Line 58: Line 57:
  
 {{:​pm:​prj2021:​apredescu:​rez-game-over.jpeg?​500|}} {{:​pm:​prj2021:​apredescu:​rez-game-over.jpeg?​500|}}
 +
 ===== Concluzii ===== ===== Concluzii =====
 +Din punctul meu de vedere a fost un proiect interesant, m-am lovit de câteva dificultăți dar am reușit să le rezolv și am învățat să folosesc un LCD și să lucrez cu Arduino.
 +===== Demo =====
 +https://​drive.google.com/​drive/​folders/​1-N8hdJ8xdzN2g1qiChM546rEbE-Pud_8?​usp=sharing
  
 ===== Download ===== ===== Download =====
 +{{:​pm:​prj2021:​apredescu:​tower-stack.zip|}}
 +{{:​pm:​prj2021:​apredescu:​tower_stack_b_rusu.pdf|}}
 ===== Jurnal ===== ===== Jurnal =====
   * alegere proiect   * alegere proiect
   * creare pagina de wiki   * creare pagina de wiki
 +  * realizare proiect
 +  * schema electrică
 +  * completare documentație
 +
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
 https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​apredescu/​tower-stack?​do=export_pdf https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​apredescu/​tower-stack?​do=export_pdf
 +https://​cleste.ro/​modul-lcd-tft-35inch-uno.html 
 +https://​cleste.ro/​modul-accelerometru-i-giroscop-mpu6050.html
pm/prj2021/apredescu/tower-stack.1622576998.txt.gz · Last modified: 2021/06/01 22:49 by bianca_ana.rusu
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