Ionuţ-Vlad SOARE (25238) - Snake on LCD

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul are ca scop implementarea jocului Snake folosind un controller ATmega324. Afisajul va fi pe un LCD Nokia (5510).

Descriere generală

Jocul “Snake” e de tip single-player in care jucatorul foloseste 4 butoane pentru a schimba directia sarpelui. Va mai exista inca 1 buton pentru selectie. Scopul sau e de a creste sarpele cat mai mult posibil prin hranirea sa, iar lovirea de un obstacol va duce la game over. El a fost prezent pe multe telefoane mobile inca de la inceputul dezvoltarii lor. De asemenea, un speaker va reda evenimente precum: apasarea unui buton in meniu, cand sarpele mananca si la game over.

Sunt 2 grade de dificultate:

  • easy: sarpele trece prin pereti.
  • hard: sarpele nu poate trece prin pereti.

Pentru modul easy jucatorul are 3 vieti.

Schema bloc

Componente de baza

Nr CrtDenumireCantitate
1 ATMEGA324P-20PU 1
2 USB B-PCB-R 1
3 Quartz Q16.000 MHz HC-49S 1
4 LED`s OSR6NU3134A 2
5 PCB Pin head HN1X40 1
6 PCB Pin head HN2X20 1
7 Tact Switches TS-06E (TS-3) 2
8 RW25CF 100R 3
9 RW25CF 470R 3
10 RW25CF 1.5K 1
11 RW25CF 10K 1
12 Capacitor CML 15pF 50V NP0 2
13 Capacitor CML 100nF 50V X7R P2.5 3
14 IC sockets LC40 ROHS 1
15 Connector MJ14 1
16 Zener Diode BZX55(79)C3V3 MBR 2

Componente aditionale

Nr CrtDenumireCantitate
1 Regulator 12V-5V 1
2 Mufa alimentare 1
3 Condensator 100nF 1
4 Condensator 10uF 1
5 Regulator 5.3~18vin 3.3vout 1
6 Condensator 10uF 1
7 Rezistenta 1ko 3
8 Rezistenta 10ko 1
9 Butoane 5
10 Buzzer 1
11 Condensator 100uF 1
12 Perfboard 1
13 LCD Nokia 5510 1

Schema electrica

Am schimbat putin schema electrica: butoanele le-am legat la PORTA0..4, iar LCD-ul la PORB si interfata SPI GND.

Software Design

Mediul de dezvoltare folosit: Programmer`s Notepad. Codul a fost compilat cu winAVR. Libraria folosita pentru display a fost cea de la LCD Nokia 3310, compatibila si cu 5510.

S-a folosit o structura cu rolul de a retine block-urile de pe display, obiectele fiind vectori ale acestei structuri. Am plecat de la un define DIM 2. Pentru valoarea 1 mi s-a parut prea mic afisajul. Obiectele sunt: sarpele, peretii laterali pentru modul HARD si mancarea. Cum am specificat mai sus, avem 2 nivele de dificultate: easy si hard. Pentru modul “hard” am construit peretii pe extremitati. La modul easy, jucatorul are disponibile 3 vieti. La inceput apare meniul, jucatorul alege modul de joc, iar mai departe se desfasoara efectiv gameplay-ul. Cand se loveste de obstacol, apare un mesaj “Game over” si scor-ul obtinut. Jucatorul poate alege sa revina in meniu prin apasarea butonului superior.

Deplasarea sarpelui se face prin mutarea blocurilor in directia data de capatul sarpelui, directie influentata de alegerea jucatorului. Mancarea e generata random, cu verificarea la nivel “Hard” ca nu cumva sa apara in ziduri. Efectul de miscare e generat printr-o parcurgere a unei functii “snake_delay”.

Probleme: Nu am reusit sa implementez functionalitatea buzzer-ului. Initial am cumparat unul care se alimenta la 12V(am vazut tarziu), iar placa mea e pusa pe 3V3. Mi-am luat in ultima zi un modul cu buzzer, dar n-am facut un cod bun, asa ca l-am scos definitiv.

Ca si observatie, butonul de select e mult prea sensibil, face dublu click daca nu-i apasat atent.

Poze: TODO.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

  • Proiect interesant care m-a ajutat sa inteleg mai bine partea de hardware.
  • Lipitul componentelor a fost ok, n-am intampinat nici o problema.
  • E interesant sa vezi produsul final functionand.

Download

Link: pmfinal.zip

Jurnal

  • Am lipit componentele de baza pe placuta.
  • Instalarea bootloader-ului.
  • Am luat piesele optionale pentru alimentare 3V3, butoane, buzzer si LCD.
  • Am terminat partea hardware.
  • Buzzer-ul nu e ok, am luat altul, dar tarziu.
  • Partea de soft functionala, cu exceptia generarii de sunete.

Bibliografie/Resurse

  • Datasheet ATMEGA324PA - doc8272.pdf
  • Librarie pentru LCD - 37
  • Laboratoarele rezolvate.
  • Si proiectele de anii trecuti (bune indrumare :D )
pm/prj2016/mandrei/9696.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