This is an old revision of the document!
Autor: Datcu Diana-Cristina
Proiectul constă în implementarea jocului de Tetris pe un ecran LCD, în care se vor obține puncte de fiecare dată când se va umple o linie. Jocul este pierdut când nu va mai exista spațiu. În implementare sunt utilizate 7 butoane ca input, microcontroller-ul, iar LCD-ul, un LED și un difuzor ca output.
Plăcuța Arduino va prelua datele de intrare de la butoane. Jucătorul va folosi 2 butoane pentru mișcarea stânga/dreapta a piesei, două butoane pentru rotirea stânga/dreapta a piesei, un buton va fi folosit pentru selectare, un buton pentru restart si unul pentru pauză.
Mediu de dezvoltare: ARDUINO IDE
Biblioteci folosite: https://github.com/prenticedavid/MCUFRIEND_kbv https://github.com/PaulStoffregen/ILI9341_t3 https://github.com/PaulStoffregen/XPT2046_Touchscreen https://github.com/olikraus/ucglib https://github.com/adafruit/Adafruit-GFX-Library
In realizarea codului (care nu stiu daca functioneaza cum ar trebui), m-am inspirat din mai multe surse mentionate in rubrica BIBLIOGRAFIE/RESURSE. In prima parte a codului sunt preponderent functii pentru buzzer. Am ales sa imi fac singura melodia care va acompania jocul prin utilizarea mai multor note definite la inceputul programului. Apoi imi construiesc piesele de Tetris. Implementarea propriu-zisa a jocului se afla in funcia loop. Dupa un anumit timp, o piesa coboara cate un rand, verificandu-se de ffiecare data coliziunea cu alta piesa. Piesa coboara pana cand acest lucru nu mai este posibil, caz in care o noua piesa va aparea pe ecran. In cazul in care un rand este deja plin, se va sterge randul respectiv, urmand ca piesele care se afla deasupra randului sters sa coboare cu o pozitie. In cazul in care se doreste rotirea piesei, se va apasa pe un buton iar piesa se va roti la stanga. Jocul se termina in momentul in care o piesa noua nu mai poate cobori nicaieri pe ecran.
NU MERGE! PLIZ HELP
Proietul a fost destul de fun de realizat, insa frustranta partea cu LCD-ul. Daca nu m-as fi apucat atat de tarziu de proiect (cu 4 zile inainte de data la care ar fi trebuit sa il prezint) as fi schimbat LCD-ul sau as mai fi incercat si legarea unor rezistente astfel incat sa LCD-ul sa primeasca 3.3V in loc de 5 V. Am invatat insa sa programez in Arduino ceea ce mi se pare un plus.
Link download: Download pdf
Link-uri cod:
https://hackaday.io/project/10761-tetris-on-arduino-lcd
https://www.instructables.com/Arduino-24-Touch-Screen-LCD-Shield-Tutorial/
Informatii legate de realizarea circuitului:
https://learn.sparkfun.com/tutorials/bi-directional-logic-level-converter-hookup-guide/all Conectarea convertorului de nivel logic cu 4 canale
https://www.youtube.com/watch?v=4DtuOeeYHys
Datasheet:
https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf
http://grobotronics.com/images/datasheets/xpt2046-datasheet.