This shows you the differences between two versions of the page.
pm:prj2021:apredescu:tower-stack [2021/06/01 23:02] bianca_ana.rusu [Descriere generală] |
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ă nu 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 inalt. Jucatorul 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. In momentul in care turnul este prea inalt, acesta este deplasat in jos. 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 înalt. Jucă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 |