Snake

Introducere

Unul dintre primele si cele mai simple moduri de distractie si relaxare oferite de telefoanele mobile a fost jocul Snake. Ideea proiectului este de a crea un joc Snake folosind microcontrolerul ATMega16 si un display de Nokia 3310 interfatat cu acesta.

Descriere generală

Proiectul este alcatuit dintr-o placa de test pe care este fixat display-ul de Nokia 3310 si butoanele pentru controlul jocului, placa de baza pe care se afla dispus microcontrolerul ATMega16 precum si conectori ce leaga porturile microcontrolerului de iesirile butoanelor si respectiv intrarile display-ului.

Schema bloc:

Pentru interfatarea display-ului am folosit portul A al microcontrolerului (pinii 0, 1, 3, 5, 7), iar pentru butoane am utilizat portul C (pinii 2-sus, 3-jos, 4-stanga, 5-dreapta). Deoarece display-ul functioneaza intr-un anumit interval de tensiune(conform specificatiilor), iar alimentarea circuitului se face la o tensiune de 5V prin USB, am utilizat cate o rezistenta de 3.3k inseriata pe fiecare din cei 5 pini (de interfatare a display-ului). Tot in acest scop am folosit doua diode tip 1N4841 inseriate pe borna ”+” de alimentare a display-ului. }

Hardware Design

Piesele folosite pentru realizarea proiectului:

  • placa de baza cu microcontroler ATMega16
  • placa de test
  • display de telefon Nokia 3310
  • 4 butoane
  • un condensator polarizat de 10uF
  • 5 rezistente de 3.3k
  • 1 rezistenta de 1k
  • 2 doide 1N4841

Schema electrica:

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare: Notepad++, Proteus-ISIS;
  • librării şi surse 3rd-party: pcd_8544.dll - LCD Nokia 3310 driver;
  • structura utilizata pentru implementarea jocului este structura “Block”, ce contine doua campuri reprezentand coordonatele coltului din stanga-sus al unui bloc ce compune sarpele.
  • fisierele sursa ce alcatuiesc programul sunt: main.c, lcd.c, font.h si lcd.h
  • functiile implementate pentru descrierea comportamentului sarpelui sunt:
    • drawBlocks() - deseneaza blocurile pe display;
    • snake_init() - initializeaza vectorul de blocuri reprezentand sarpele;
    • snake_depl() - deplasarea pe una din directii;
    • check_snake() - verifica daca exista coliziuni cu hrana sau cu el insusi;
    • game_over() - terminarea jocului;
    • SnakeDelay() - delay sarpe;

Rezultate Obţinute

In urma finalizarii proiectului, rezultatul obtinut a fost un joc functional.

Concluzii

Proiectul are o comportare foarte buna avand in vedere calitatea relativ slaba a placii de test utilizate pentru fixarea si punerea in circuit a display-ului si butoanelor. Am intampinat mici dificultati la interfatarea display-ului.

Download

Fisierele sursa: main.c, lcd.c, lcd.h, font.h, makefile, atmega16 cu rezistente.DSN, avrusbboot.exe

snake.zip

Jurnal

  • Placutiada
  • lipirea componentelor pe placa de baza
  • alegerea temei
  • achizitionarea componentelor
  • conectarea display-ului
  • crearea si testarea programului
  • finalizarea proiectului

Bibliografie/Resurse

Hardware:

doc2466.pdf

pcd8544.pdf

Software:

lab2

prj2011

pm/prj2012/avoinescu/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