Snake

Introducere

Descriere Generala a Proiectului

Proiectul consta in implementarea clasicului joc Snake cu inputul - butoane (push buttons) si outputul - LCD Nokia 3310.

Reguli

Regulile jocului implementat de mine:

  • Jucatorul controleaza sarpele apasand pe cele 5 butoane functionale: Sus, Jos, Stanga, Dreapta si Reset, plasate sugestiv pe placuta de extensie.
  • Sarpele merge intr-o directie (aceasta fiind Stanga la inceputul jocului) si moare atunci cand intalneste marginea suprafetei de joc (tot ecranul) sau intra in propriul corp.
  • Dupa expirarea unui anumit timp, apare o “berry”. Daca sarpele o mananca, creste in lungime. O berry valoreaza un punct.
  • Jocul se poate reseta apasand Reset, aceasta actiune avand ca urmare resetarea sarpelui si a scorului.
  • Jocul nu se termina.

Reguli ale jocului original pot fi gasite aici: Snake_%28video_game%29

Hardware Design

Piesele folosite pentru interconectarea LCD-ului Nokia 3310 cu placuta de baza sunt:

  • 5 resistente de 3k3
  • 5 rezitsente de 1k8
  • 2 diode 1N4148
  • 1 dioda zener 3v3
  • 1 condensator 10uF
  • 6 butoane: Sus, Jos, Stanga, Dreapta, Reset, Pauza (nefolosit)
  • pini si fire de legatura intre placute

Deoarece LCD-ul Nokia 3310 functionaeza la o tensiune intre 2.7-3.3V a fost necesara folosirea unuor divizoare de tensiune pentru pinii SCK (clock), SDIN (data), D/C (data/cmd), SCE (enable), RES (reset). Pinul GND este conectat la GND de pe placuta si pinul VOUT este conectat la la condensatorul de 10uF (care este conectat la masa). Pentru protectia ecranului am pus si o dioda zenner de 3V3.
nokia_3310_lcd.jpg

Divizorul de tensiune:

Conectarea ecranului cu atmega16:

  • SCK = PC7
  • SDIN = PC6
  • D/C = PC5
  • SCE = PC4
  • RES = PC3

Conectarea butoanelor cu atmega18:

  • LEFT = PA5
  • DOWN = PA4
  • UP = PA3
  • RIGHT = PA2
  • RESET = PA1
  • PAUSE = PA0

Schema este urmatoarea, fara detalierea divizoarelor de tensiune:
schema.jpg

Forma finala a proiectului este prezentata in imaginea de mai jos. Se observa ca butoanele si circuitul de conectare al ecranului sunt pe o placuta de extensie (de test). Ecranul se interconecteaza cu placuta de extensie.

Se observa starea initiala a jocului pe ecran.

Placuta de baza:

Placuta de extensie, fara ecranul conectat:

Se observa divizoarele de tensiune, realizate cu rezistente de 3K3 si 1k8 (3K3 la masa).

Ecranul a fost conectat folosint doua suruburi si ata de o placuta corodata cu trasee ce se conecteaza mecanic cu cei 8 pini (mai mult arcusoare, cu o distanta de 1,15 mm intre ele). Scopul a fost evitarea lipirii cu ledconul.

Rezultatul nu e foarte aspectuos…dar functioneaza.
Rezultatele simularii: am programat direct pe placuta.

Software Design

Mediul de dezvoltare : Notepad++.
Am folosit libraria pcd8544.h Nu am folosit structuri speciale, numai o memorare a starii ecranului de joc. Functii implementate:

  • snake_init() - initializarea pozitiei sarpelui.
  • verifica() - verificarea intersectarii unei pozitii cu corpul sarpelui.
  • generare_berry() - genereaza la o pozitie random berry
  • snake_move() - mutare sarpe intr-o anumita directie cu o unitate spatiala
  • stergere_sarpe() - sterge sarpele de pe ecran
  • afisare_sarpe() - afiseaza sarpele pe ecran

Rezultate Obţinute

Un joc functional.

Concluzii

Cea mai grea parte a priectului a fost conectarea ecranului. Odata depasita aceasta etapa, proiectul a iesit rapid.

Download

N/A

Bibliografie/Resurse

LCD Datasheet pcd8544.pdf
Biblioteca functii LCD: nokia3310library.zip

pm/prj2011/dloghin/snake.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