Mihai ŢIGĂNUŞ - Classic Snake

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

O implementare a celebrului joc de pe nokia, folosind un ecran de nokia 3310. :)

Descriere generală

Jucatorul va putea controla jocul folosind doua butoane. El trebuie sa evite sa se atinga pe sine si in acelasi timp sa treaca prin cat mai multe bonusuri pentru a-si mari punctajul. Butoanele vor controla miscarea stanga - dreapta fata de directia de mers a snake-ului. Cand va atinge un perete se va face wrap-around, snake-ul va aparea din partea opusa.

Hardware Design

In primul rand a fost necesar sa cobor tensiunea primita de la intrare 5V, la 3.3V, deoarece aceasta este tensiunea de alimentare a ecranului si tensiunea cu care este comandat. Asta a presupus folosirea unui regulator de tensiune (BA033CC0T), un condensator si in plus modificarea quartz-ului deoarece microcontroller-ul nu este facut pentru a functiona la 3.3V. Astfel am inlocuit quartz-ul de 16Mhz cu unul de 12Mhz. Pentru a functiona corespunzator a trebuit recompilat bootleader-ul si reincarcat pe placa. Pentru a nu arde ecranul a trebuit sa introduc un condensator intre pin-ul de VOUT al ecranului si portul la care este conectat. A fost foarte tare ca, din placuta cablajul permitea scaderea tensiunii ce intra pe microncontroller deoarece altfel erau sanse mari ca grupele de rezistente si diode (divizoarele de tensiune) necesare pentru a aprinde folosi ecranul sa nu-mi scada tensiunea suficient. De asemenea daca nu prea te pricepi la partea de estetica pe breadboard, pe placuta imprimata e mult mai simplu si mai elegant.

Componente necesare:

  • cele de baza ale proiectului
  • 2 butoane
  • ecran nokia 3310
  • 3 rezistente 3.3
  • quartz 12Mhz
  • 1 condensator 10uF (pentru VOUT)
  • 1 condensator 100uF (la alimentare)
  • BA033CC0T ROHM

Majoritatea componentelor au fost cumparate de la Comet www.comet.srl.ro

Mi se pare foarte important inainte sa pui ecranul sa verifici ca scoti tensiunea care trebuie pe pini

E mult mai bine sa-ti iei cable care permit mufarea direct pinii de placa. Sa lipesti pinii la fire e horror si arata si rau. In plus dupa aceea trebuie sa verifici ca nu ai scurt intre ele

Software Design

Pentru proiectul meu partea software pentru microcontroller a presupus folosirea librariei pentru lcd de nokia si activarea/folosirea butoanelor pentru a controla snake. Cat despre logica de joc in mare am creat o structura (struct nibble) pentru fiecare nibble (caracter) al snake-ului, care pentru fiecare retine pozitia curenta in harta respectiv directia de mers. Pentru a da update pozitiei, vad ce directie avea nibble-ul din fata la momentul anterior si il updatez pe cel curent in functie de aceasta (desigur pentru a asigura ca folosesc pozitiile de la momentul anterior trebuie inceputa parcurgerea de la sfarsitul sarpelui). La fiecare moment verific daca am o coliziune sau am atins un bonus. In cazul de coliziune afisez mesajul de game over, iar in cazul in care am atins un bonus maresc sarpele si adaug alt bonus intr-o pozitie random. Jocul ar trebui sa fie si wrap around in caz ca este atins unul dintre pereti.

Rezultate Obţinute

Din pacate ecranul nu a functionat (cel mai probabil ars la lipire). Astfel nu am mai avut cum sa verific nici partea software (si nici pentru ceilalti colegi care aveau acealasi tip de ecran nu a functionat)

Mi se pare o idee buna daca vrei sa folosesti ecran, sa incerci sa-l testezi cat mai repede (eventual pe placa unui student din anii trecuti) deoarece nu iti dai seama daca l-ai ars sau nu pana nu incerci. De asemenea pinii sunt foarte mici si foarte greu de lipit.

Desi este mult mai usor de folosit ecranul cand schimbi tot microcontroller-ul sa functioneze la 3.3V, trebuie din start sa stii ca trebuie sa schimbi si Quartz-ul ca sa nu faci prea multe drumuri dupa piese

Concluzii

Imi pare rau ca nu m-am mobilizat mai din timp/miscat mai repede, pentru ca proiectul ar fi fost foarte interesant, mi s-a parut foarte fain cum cativa pini pot controla atatea lucruri in atatea moduri. Adica inca mi se pare genial ca poti controla doar cu 8 pini afisarea la un ecran lcd, de asemenea e interesant cat de flexibil este microcontroller-ul in sensul in care iti alegi tu care/cum iti folosesti pinii.

Multe multimiri asistentilor care au stat dupa noi multe ore dupa/in afara programului si ne-au ajutat cu lipitul/ganditul :)

Download

Am pus codul pe care l-am facut, dar nu am reusit sa-l verific. nokia_snake_mihai_tiganusv2.zip

Bibliografie/Resurse

Biblioteca pentru utilizarea ecranului37

Proiectele din anii trecuti de la PM

pm/prj2014/tvisan/131291.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