Descriere joc:
O secventa aleatoare de piese formate din patru patrate fiecare, cad pe terenul de joc (matrice). Obiectivul jocului este de a manipula aceste piese, prin mutarea laterala sau rotirea cu 90 de grade, cu scopul de a crea linii orizontale de blocuri fara lacune. Atunci cand o astfel de linie este creata, ea dispare şi toate blocurile deasupra liniei elimite va cadea si vor umple spatiile goale.
Jocul va fi implementat pe o matrice de leduri folosind un accelerometru pentru control.
Cele trei axe ale accelerometrului vor fi folosite:
Ox pentru deplasare piesa stanga-dreapta
Oy pentru accelerare carede piesa
Oz pentru rotire piesa
Lista Piese:
8 rezistente de 220 ohmi
Matrice leduri 8×8
Accelerometrul MMA7260QT
MMA7260QT este un accelerometru cu 3 axe, cu o sensibilitate de la 1,5G la 6G.
Se conecteaza la microcontrolerul ATmega16 prin urmatoare configuratie
ULN2804A
Matricea de leduri se conecteaza la portul C al microcontroler-ului si la pinii de iesire ai integratului ULN2804A
pinii de intrare fiind conectati pe portul A de la ATMEGA16
Din cauza ca nu am reusit sa achizitionez un accelerometru, am folosit 3 butoane pentru control.
Butoanele sunt conectate la portul B al microcontroler-ului la pinii PB5 PB6 PB7.
Butonul conectat la PB5 - rotire bloc
Butonul conectat la PB6 - deplasare stanga
Butonul conectat la PB7 - deplasare dreapta
Simulare in Proteus
Limbaj folosit : C
Initial pe matricea de leduri vor fi afisate pe rand literele : T E T R I S
Jocul incepe la apasarea unuia din butoane (indiferent care).
Din cauza ca afisajul este mic (8×8) am considerat doar cateva forme de blocuri:
Blocurile apar in ordine si pozitii aleatoare.
La apasarea unui buton se sterge piesa curenta si se verifica daca modificarea specifica butonului apasat poate avea loc, caz in care se
actualizeaza coordonatele blocului si aceasta apare in noua pozitie.
Miscarea pe verticala ( de sus in jos ) se realizeaza la un interval de timp.
Dupa ce fiecare bloc a ajuns pe ultima linie pe care poate sa coboare se verifica exista linii completate, acestea fiind eliminate, iar apoi
un nou bloc este generat aleator.
Pentru fiecare forma am considerat un punct de rotatie care ramane fix.
In functie de acest punct, forma piesei si pozitia de rotatie este reprezentate piesa pe afisaj.
Chiar daca partea hardware nu a functionat corect pana la final, realizarea partii software si incercarea de a corecta hardware-ul
au facut din acest proiect o experienta placuta din care am ramas cu ceva practic.
Arhiva cu software-ul si schema de simulare in Proteus
Comanda piese placa de baza
Realizare placa de baza
Cumparat piese placa aditionala
Realizare placa aditionala
Realizare software
www.elf.cs.pub.ro/pm
www.datasheetcatalog.com
Filmulet cu un joc de tetris pe matrice de leduri folosind ATmega16
http://www.youtube.com/watch?v=wzjROaCFm78&feature=related