Mario Bros

Introducere

Proiectul consta in crearea unui joc asemanator celebrului Mario Bros 1983. Dispozitivele de intrare reprezinta 3 butoane:

  1. inainte
  2. inapoi
  3. saritura

Pe post de display se va folosi o matrice 8×8 de leduri.

Descriere generală

uControlerul va primi comenzi de la butoane si va modifica starea matricii de leduri. Daca nu se apasa nici un buton matricea ramane neschimbata.

O matrice de leduri are anodul fiecarui rand conectate impreuna si catodul fiecarei coloane conectate impreuna. Pentru a controla o matrice de leduri avem doua obtiuni:

  1. Mergand pe fiecare rand aprindem ledurile dorite din randul respectiv.
  2. Mergand pe fiecare coloana aprindem ledurile dorite din coloana respectiva.

Nu este posibil sa aprindem toate ledurile matricii in acelasi timp, pentru ca ledurile au catodul sau anodul comun. Solutia pentru a aprinde toate ledurile odata foloseste Persistenta Viziunii. Mergand pe fiecare coloana sau rand destul de repede ( ~ 50 Hz sau mai mult ) ochiul uman nu ar percepe ciclarea pe linii sau coloane ci ar vedea toata matricea intreaga.

Deci pentru a aprinde un led trebuie sa punem pinul randului pe GND si sa generam tensiune pe pinii conectati la coloane pentru fiecare led pe care il aprindem pe randul respectiv. O problema apare atunci cand aprindem pe aceeasi coloana mai multe leduri, curentul cumulat se indreapta spre un singur pin al uControlerului si aceasta il poate defecta.

De aceea am folosit circuitul integrat ULN2803 bazat pe tranzistoare Darlington.

Hardware Design

Listă de piese:

  1. Placuta etapa I.
  2. Matrice leduri TOM-2088BH.
  3. ULN2803.
  4. 3 butoane.
  5. Panglica fire.

Schema matrice leduri:

Schema ULN2803

Schema finala

Software Design

Codul aplicatiei a fost scris in C.
Am incarcat programul pe uControler cu avrsusbboot.
Editorul folosit - Notepad++

Algoritmi şi structuri planuite:

unsigned char led_mat[8][8]; - retine starea matricii de leduri
o matrice cu traseul, cand Mario se misca spre dreapta toate coloanele matricii led_mat se shifteaza spre stanga
si pe ultima coloana se copiaza o coloana din game_land;
unsigned char game_land[8][100];
void init(); - initializeaza pinii de intrare (butoanele) si cele de iesire (matrice leduri)
void get_button(); - se verifica butonul apasat si se modifica starea matricii

Rezultate Obţinute

La sfarsitul proiectului am inteles cum functioneaza o matrice de leduri, un circuit integrat tip ULN2803 si am reusit sa aprind diferite leduri pe matrice. Nu am dus pan la sfarsit implementarea joculetului. Am intilnit greutati ca comportament neadecvat al ledurilor urmand toti pasii corect de interfatare a matricii.

Concluzii

Pentru implementarea unui astfel de joc destul de complex pentru o matrice 8×8 este nevoi de cel putin o matrice RGB pentru al deosebi pe Mario de caramizi si pamant.

Download

Scheme utile: scheme.rar

Bibliografie/Resurse

pm/prj2011/pgp/mario-bros.txt · Last modified: 2021/04/14 17:07 (external edit)
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