Mihai-Cătălin ARSENESCU (24891) - Inundare cu Culori - Joc LCD

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul consta in realizarea unui joc pe un LCD grafic. Jocul este alcatuit dintr-o matrice de patrate colorate diferit si presupune cucerirea acesteia prin combinarea culorii si suprafetei de start. Jocul original poate fi gasit si jucat la adresa: http://unixpapa.com/floodit/

Din cauza bugetului limitat, am ales sa folosesc un LCD text non-color, logica si gameplay-ul jocului ramanand aceeasi.

Descriere generală

Lista componente

Nume Cantitate Pret (RON)
Placa de baza PM 2016 1 8
Componente de baza PM 2016 - vezi lista 1 36
Nokia 5510 LCD display 1 25
Bareta fire mama-mama 1 13
Placa de test 1 7
Butoane 5 3
R 3K3 7 -
R 1K8 7 -

Hardware Design

Deoarece LCD-ul Nokia5110 necesita alimentare la 3.3V, toate legaturile cu microcontroller-ul(5V) vor fi realizate cu divizoare de tensiune. Schema electrica realizata in Proteus:

Software Design

Pentru partea software am folosit mediul de dezvoltare WinAVR, impreuna cu editor-ul text Programmers Notepad. Libraria folosita pentru a interfata cu LCD-ul am luat-o de pe platforma Quantum Torque[1]. Libraria ofera functii precum LCD_init, LCD_clear, LCD_str, LCD_goto_xy. Jocul presupune 'cucerirea' hartii cu grupa de simboluri din stanga sus. O grupa de simboluri este reprezentata de o multime de simboluri 'adiacente'(sus-jos-stanga-dreapta). In cod, salvez pentru fiecare simbol din matrice grupa acestuia, iar atunci cand se apasa pe un buton corespunzator unui simbol fac o unificare globala(pentru fiecare casuta, daca are vecini din grupe diferite si cu acelasi simbol, le unesc grupele din care fac parte). Algoritmul este extrem de similar cu paradigma Union-Find(Multimi disjuncte), insa lipsa structurilor de date din STL in compilatorul avr, m-a determinat sa abordez problema intr-un mod mai ineficient, insa rapid pe o dimensiune a datelor atat de mica.

Rezultate Obţinute

  • Jocul este functional 100%
  • Jocul nu dispune de culori, ci foloseste simboluri in loc
  • Divizoarele de tensiune sunt implementate pe breadboard, pentru usurinta
  • Jocul dispune si de un numar de incercari de schimbare de simbol
  • Dispunerea aleatoare a simbolurilor in tabla de joc depinde de numarul de apasari pe un buton('X')

Concluzii

  • Proiectul este interesant, engaging
  • Realizarea chiar si a unui proiect simplu nu este deloc ieftina
  • Consider ca ar fi mai ok daca proiectul ar fi realizat pe echipe, in cadrul laboratorului
  • E mai usor sa ai tensiune direct 3V3 decat sa folosesti divizoare de tensiune
  • Nu se lipeste pe partea cu plastic a placii de test

Download

Arhiva cu toate resursele este disponibila la [2].

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2016/csoare/plimbaursu.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