Tetris

Autor: Datcu Diana-Cristina

Introducere

Proiectul constă în implementarea jocului de Tetris, din pacate nefunctional, 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 5 butoane ca input, microcontroller-ul, iar LCD-ul, un LED și un difuzor ca output.

Descriere generală

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, un buton pentru rotirea piesei, un buton va fi folosit pentru selectare si unul pentru pauză.

Hardware Design

Piese necesare:

  • Modul LCD SPI de 2.8'' cu Touchscreen - Controller ILI9341 și XPT2046 (240×320 px)
  • Arduino Uno R3
  • Buzzer
  • Breadboard
  • Fire
  • Butoane
  • Translator de nivel logic cu 4 canale (Doar pentru utilizarea butoanelor)
  • Translator de nivel logic cu 8 canale (Pentru a utiliza si touchscreen)

Scheme electrice: Schema electrica cu translatorul cu 4 canale:

Schema electrica cu transaltorul cu 8 canale: Realizare circuit: Mentionez de la inceput ca proiectul nu functioneaza, intrucat LCD se aprinde insa nu afiseaza nimic. LCD-ul a fost unul destul de pretentios dupa parerea mea, deoarece voia alimentare de la 3.3V, si nu de la 5V asa cum ofera placuta de Arduino. Din aceasta cauza a trebuit sa folosesc translatoare logice. In implementarea proiectului am plecat de la a descoperi cum functioneaza LCD-ul. Din pacate nici pana acum nu am aflat. Am cautat pe diverse site-uri, am vazut mai multe moduri de a lega LCD-ul la placuta de Arduino insa nu a functionat. Am conectat in mai multe moduri si de fiecare data incercam sa rulez exemple din biblioteca UCGlib in care decomentam linia Ucglib_ILI9341_18x240x320_HWSPI ucg (/ * cd = * / 9, / * cs = * / 10, / * reset = 8); insa fara vreo reusita. Am ales sa termin circuitul pe care il voiam finalizat.

SOFTWARE DESIGN

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.

REZULTATE OBTINUTE

NU MERGE! PLIZ HELP

CONLCUZII

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.

JURNAL

  • 24.04 Alegere proiect
  • 01.05 Realizare pagina wiki proiect
  • 07.05 Comanda primul set de piese
  • 10.05 Livrare primul set de piese
  • 12.05 Comanda al doilea set de piese
  • 15.05 Livrare al doilea set de piese
  • 17.05 Tentativa de a ma apuca de proiect, am vazut ca am nevoie de translatoare logice pentru LCD
  • 19.05 Comanda al treilea set de piese
  • 23.05 Livrare al treilea set de piese
  • 28.05 Discutie cu laborantul pentru niste clarificari suplimentare
  • 31.05 Documentatie proiect
  • 01.06 - 04.06 Chin cu legatul LCD
  • 03.06 - 04.06 Implementare cod
  • 04.06 - “Finalizare” proiect si pagina de wiki

DOWNLOAD

Link download: Download pdf

BIBLIOGRAFIE/RESURSE

pm/prj2021/apredescu/joc_tetris.txt · Last modified: 2021/06/04 16:04 by diana.datcu
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