Table of Contents

Ruxandra-Maria DRĂGHICI (78364) - Joc Snake

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Scopul acestui proiect este de a implementa binecunoscutul joc Snake pe un LCD similar unui ecran de telefon. Structura jocului o urmeaza pe cea clasica: se asteapta apasarea butonului de start, timp in care se va reda o melodie si un mesaj de bun venit jucatorului, la apasarea butonului va incepe jocul, sarpele avand o dimensiune mica(4 unitati de reprezentare pe LCD) care creste cu o unitate de fiecare data cand sarpele reuseste sa manance un fruct, reprezentat printr-o unitate pe o pozitie random pe LCD. Daca sarpele mananca din propriul corp sau se loveste se marginile campului de joc, jocul se termina si se va afisa un mesaj de Game Over impreuna cu o melodie de final, care va continua pana la apasarea butonului de start.

Schimbarea directiei de mers a sarpelui este controlata prin intermediul a 4 butoane aferete celor 4 directii: sus, jos, stanga, dreapta. In momentul in care sarpele reuseste sa acumuleze un punct, jucatorul este anuntat prin intermediul unui sunet scurt.

Prin intermediul acestui proiect se doreste aprofundarea si acumularea de noi cunostinte despre microcontrollere, utilizand la baza placuta Atmega324, precum si realizarea unuia dintre cele mai cunoscute jocuri cu ajutorul tehnologiilor hardware.

Descriere generală

 Schema bloc
Prin intermediul programului software este controlat output-ul aplicatiei (reactia LCD-ului) in momentul in care apare un eveniment de input(apasarea unuia din cele 4 butoane sau butonul de start). Scopul microcontroller-ului este de a reprezenta pe LCD modificarile de pozitie ale sarpelui pe parcursul jocului si de a reda sunet prin intermediul difuzorul in momentul pornirii/opririi jocului si in momentul in care sarpele mananca.

Hardware Design

Index Denumire Cantitate
1 Componente de baza 1
2 LCD Nokia 5510 1
3 Modul Buzzer 1
4 Buton 5
5 Fire mama-mama 30
6 Placa de test 1
7 Fire conductoare de legatura 20

Am incercat initial proiectul pe un LCD ST7735(https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/3552-modul-lcd-de-144-cu-spi-i-controller-st7735-128x128-px.html) si nu am reusit sa-l fac sa functioneze. [3000 de ani mai tarziu tot nu va functiona, hint pentru cine citeste acest proiect: alegeti cu atentie LCD-ul, astfel incat sa fie compatibil cu placuta :) ]

Schema electrica:
schematic.jpg
Schema electrica prezinta modul de legare a pinilor de pe placa ATMEGA cu componentele folosite: buzzer(la PORTC), LCD(PORTB) si butoane de comanda(PORTD).

Software Design

Codul aferent aplicatiei a fost dezvoltat in AtmelStudio si incarcat in placa prin aplicatia HIDBootFlash. Programul a necesitat adaugarea bibliotecii specifice LCD-ului NOKIA5110(in fisiere se regaseste in lcd.h si lcd.c). Pe langa aceste fisiere, mai este main.c in care se gaseste implementarea jocului.

Rezultate Obţinute


game_draghici.jpg
win_draghici.jpg
lost_draghici.jpg
La inceputul proiectului nu ma asteptam sa reusesc sa fac partea de cod si sa si functioneze, dar am reusit aproape tot ce mi-am propus. Intentionez sa adaug noi feature-uri jocului pe viitor.

Concluzii

Am inceput acest proiect putin sceptica, nefiind foarte familiarizata cu acest gen de proiecte care pun accent si pe partea hardware. Sincer chiar a meritat efortul depus, este un sentiment foarte interesant cand vezi ca dupa multe lipituri si munca, componentele chiar functioneaza si jocul prinde contur. Pe parcurs au aparut multe probleme tehnice, buzzer-e arse, LCD nefunctional, fire dezlipite, insa in momentul in care incepi sa scrii codul si merge si chiar arata poate mai bine decat te astepti, satisfactia e mare. Prin acest proiect am petrecut si momente frumoase si amuzante alaturi de prieteni, incercand sa ne ajutam la lipirea componentelor, ceea ce este un plus :).

Download

Arhiva contine codul sursa, biblioteca aferenta si fisier README cu descrierea realizarii partii software.

Jurnal

Milestone 1: S-a adaugat descrierea proiectului, schema bloc si componentele necesare
Milestone 2: S-a terminat placuta de baza si s-a testat la laborator (yay, it works!)
Milestone 3: S-a adaugat schema electrica a proiectului (5 mai)
10-15 mai: S-au cumparat componentele necesare implementarii dincolo de placa de baza
17 mai: S-a schimbat lcd-ul cu nokia5110
20 mai: S-au lipit componentele pe placa de test
21-23 mai: S-a inceput partea software a proiectului

Bibliografie/Resurse

snake_draghiciruxandra.rar

Biblioteca NOKIA5110: http://www.quantumtorque.com/tutorials/6-nokia-3310-lcd-driver
Schema electrica - EAGLE