Table of Contents

Ion-Gabriel TĂBUȘ (67450) - LED Shaman Totem Game

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Prezentarea pe scurt a proiectului vostru:

Descriere generală

Schema bloc proiect:

Utilizatorul foloseste cele 4 butoane (Sus/Jos/Stanga/Dreapta) pentru a parcurge matricea de 5×5 leduri, al 5-lea buton este folosit pentru schimbarea culorii ledului curent si a culorii ledurilor adiacente acestuia. Ledul pe care se afla cursorul este un led care se stinge si aprinde la intervale de timp vizibile.

Hardware Design

Lista de piese:

Recomand folosirea pentru conexiuni:

In felul acesta nu exista riscul de intreruperi de conexiuni.

PINI ATmega324A:

Registrii de deplasate inseriati:

Schema Matrice de Leduri RGB:

Matrice de Leduri RGB:

Software Design

Am setat pinii necesari de input si output:

INFO:

--BUTOANE--

PB0 - UP
PB1 - DOWN
PB2 - CHANGE
PB3 - RIGHT
PB4 - LEFT

--COLOANE MATRICE--

PA0 - COLUMN 0
PA1 - COLUMN 1
PA2 - COLUMN 2
PA3 - COLUMN 3
PA4 - COLUMN 4

--REGISTRI DE DEPLASARE--

PC0 - DATA-IN
PC1 - CLOCK
PC2 - LATCH

Precizare: Ulterior am decis sa pun coloanele pe PORTA (in schema sunt pe PORTC) si sa folosesc PORTC pentru pini registrilor de deplasare.

Am creat cateva functii pentru a ma ajuta sa incarc registrii de deplasare cu bitii coloanei curente. Folosind functiile de incarcare si functia de activarea a coloanelor independent am definit o functie de afisare matrice de joc si alte cateva functii de alterare a acesteia. Toate operatiile le fac pe matricea global definita, astfel memoria este folosita minim. Alte functii definite sunt cele de gameplay si functia principala a jocului. Toate aceste functii sunt comentate in cod.

Descriere functionalitate:

Pe matrice este afisat mesajul S.T.A.R.T dupa care incepe primul nivel. Dupa trecerea celor 5 nivele implementate, nivelele sunt generate random (functia a fost testata si este functionala, dar nu a fost implementata pe placa, am o versiune mai veche de AVR ce nu detine biblioteca time.h si nu pot compila codul pentru placuta deoarece foloseste functia rand() pentru generare random, astfel am decis sa comentez functia in cod si sa las doar cele 5 nivele).

Daca utimul nivel este trecut, este afisat un mesaj de G.A.M.E O.V.E.R si in loop un mesaj T.O.T.A.L V.I.C.T.O.R.Y.

Rezultate Obţinute

Concluzii

Un proiect destul de ok daca te apuci din timp. Am invatat sa folosesc registrii de deplasare si multiplexare folosind tranzistoare. Sunt destul de multumit de rezultatul obtinut, cea mai satisfacatoare parte a fost sa construiesc eu matricea de leduri si sa imi iasa perfect din prima (cu putina bataie de cap si degete arse). Recomand viitoarelor generatii abordarea unui joc pe matrice de leduri.

Download

ShamanTotemGame Code and Makefile

Arhiva contine:

Jurnal

Bibliografie/Resurse