Snake a fost inca de foarte mult timp cel mai popular joc pentru telefoanele mobile, in special pentru cele de la Nokia. Insa cu timpul, acesta a fost implementat si de alte companii producatoare de telefoane mobile. Am ales sa implementez acest joc pe microcontrollerul ATmega16 deoarece caracteristicile acestuia sunt sufieciente pentru a putea realiza acest joc.
Comenzile se vor da prin 4 butoane (dreapta,stanga,jos,sus), iar resetarea jocului se va face printr-un alt buton.Pentru afisare voi folosi un LCD Nokia 3310, PCD8544, foarte popular pentru embedded-devices dar si pentru ca exista deja versiuni ale jocurilor pentru acest display.
Schema bloc a modulelor este prezentata in figura urmatoare:
Piese folosite :
Placuta cu microcontrollerul ATmega16 :
Display LCD PCD8544 (de la Nokia 3310) Pentru LCD, pinout-ul este următorul :
1 - VDD – Input Voltage 2 - SCK – Serial Clock 3 - SDI – Serial Data Input 4 - D/C – Data/Command Input 5 - SCE – Chip Select 6 - GND - Ground 7 - VOUT – VLCD 8 - RES – Reset
Schema pe care am realizat-o (in Eagle) cu imbunatatirile aduse adica cu tot cu cele 5 butoane ajutatoare si display-ul de nokia este cea de mai jos :
Pentru cuplarea LCD-ului voi folosi schema din laboratorul 1 de PM:
Trebuie realizat un divizor de tensiune astfel incat tensiunea pe acei pini sa fie ~3.3 V. Divizorul de tensiune se realizeaza punand o rezistenta de 1.8 Kohm intre un pin al ATMega16 si unul al LCD-ului si o rezistenta de 3.3Kohm intre pinul LCD-ului si masa.
Am conectat cele 5 butoane si LCD-ul la microcontroller.
Codul proiectului va fi scris in limbajul C folosind compilatorul avr-gcc impreuna cu pachetul WinAVR. Programul va consta din afisarea pe display a unei matrice ce contine datele jocului.
Am gasit pe internet implementarea LCD-ului (initilizarea lui) si am atasat aceasta implementare codului meu.
Jocul va folosi toti pixelii LCD-ului. Programul principal o sa fie format dintr-o bucla principala (cea in care sarpele se misca). La apasarea unui buton se recalculeaza orientarea sarpelui, dupa care sarpele va continua sa se miste.
Va exista un algoritm de generare a punctelor pe care sarpele le va bifa si care ii vor mari dimensiunea.Cand sarpele bifeaza un punct trebuie sa fie generat urmatoarea celula a sarpelui.
Implementare software :
Cod : proiect-code.zip
A fost un proiect foarte interesant, dar pe care nu l-am terminat deoarece am avut anumite probleme cu placuta.In cele din urma am reusit sa fac partea soft pe care am testat-o doar in simulator si care nu este la fel de functionabila ca si adevaratul joc snake.Am renuntat si la butonul de reset
Snake
PCD8544 datasheet
ATmega16 datasheet
Nokia LCD game :