Ciprian-Marian COSTEA (66993) - Snake_Ultra
Introducere
Proiectul meu doreste sa refaca in primul rand functionalitatile de baza ale jocului Snake, iar in al doilea rand, sa implementeze o serie de functionalitati suplimentare.
Printre functionalitatile suplimentare se numara:
aparitia la un anumit interval de timp, tot mai des pe parcursul jocului, a unor potiuni (sfere speciale) ce la coliziune vor omori jucatorul.
buzzer-ul va emite sunete diferite la miscarea in stanga, dreapta, sus, jos a jucatorului. De asemenea va scoate un sunet diferit la finalul jocului.
pe parcursul jocului in functie de numarul de “item-uri” luate de catre sarpe se va creste nivelul de dificultate (atat in functie de viteza initiala si de rata de crestere a acesteia, cat si de intervalul de aparitie a “item-urilor”).
Descriere generală
Schema Block:
Microcontroller-ul primeste date de input de la cele 5 butoane si trimite date de output atat la LCD , cat si la buzzer.
Hardware Design
Lista de piese necesare:
Placa de baza cu microcontroller → ATmega324
LCD Display Module 128×128
Buzzer Pasiv
5 Push Buttons
Rezistente
Header de pini Mama
Conectori de tip Mama-Tata si Mama-Mama
Schema electrica:
Software Design
Descrierea codului aplicaţiei (firmware):
Mediu de dezvoltare: am folosit WinAVR
Am ales sa creez obiectul snake ca fiind compus din mai multe patratele, definite de o pozitie pe axa OX, respectiv OY, si de un sens de deplasare. La fiecare deplasare a snake-ului se genereaza o intrerupere in urma careia buzzer-ul va emite un sunet specific. In cadrul jocului se poate trece la un nivel superior daca se cumuleaza un anumit numar de “bomboane”. Atunci sarpele se va misca mai repede, iar “bomboanele” vor alterna mai repede. Jocul dispune de maxim 3 nivele, insa numarul acestora poate fi extins foarte usor.
Pentru testarea coliziunii dintre capul sarpelui si “bomboane”, “ziduri” sau restul corpului sau am folosit metoda Axis Aligned Bounded Box.
La finalul jocului am ales sa implementez o tranzitie compusa din mai multe culori. De asemenea inainte de aceasta, buzzer-ul va emite o melodie.
Librării şi surse 3rd-party: am ales sa folosesc biblioteca grafica gasita intr-un proiect din anul trecut, avand acelasi tip de LCD ca cel folosit de mine.
Rezultate Obţinute
Proiectul respecta toate specificatiile din descrierea initiala.
Placa de baza:
Montajul complet:
Concluzii
Acest proiect a reprezentat o provocare, cu precadere partea de inceput in care a trebuit sa lipesc corect toate componentele necesare.
In urma implementarii partii de software, mi-am consolidat cunostintele legate de lucrul cu intreruperi.
Obtinand rezultatul final dorit, pot spune ca satisfactiile nu au intarziat sa apara.
Download
Jurnal
22.04.2017 → Alegerea temei proiectului + componenete necesare + schema bloc
03.05.2017 → Implementarea placii de baza
06.05.2017 → Finalizarea schemei electrice
12.05.2017 → Schimbarea tipului de LCD folosit
20.05.2017 → Modificarea schemei electrice datorata schimbarii LCD-ului
21.05.2017 → Finalizarea montajului: Interconectare placa de baza + placa de test + LCD
24.05.2017 → Finalizarea partii software a proiectului.
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Biblioteca grafica folosita (din cadrul proiectului de mai jos):
23456
Pentru partea legata de intreruperi :
lab2
Pentru partea legata de PWM:
lab3
Documentația în format
PDF