Log 2048
Introducere
Prezentarea pe scurt a proiectului vostru:
Proiectul meu este un joc de tipul 2048, inspirat din acest proiect găsit pe pagina de inspiratie. Proiectul va consta în jocul propriu-zis, cu input de la un joystick și afișat pe un ecran LCD. În plus, va avea și un card microSD pe care se vor putea salva nivelele pentru a reveni ulterior la acestea, dar se vor putea salva și highscore-uri pentru a se face un clasament.
Scopul este de a fi un joc pentru relaxare/competiție între jucători.
Descriere generală
Module hardware:
Joystick - se va folosi atât pentru a interacționa cu jocul, cât și pentru a citi un nume pentru a afișa pe clasament
Card microSD - folosit pentru a stoca nivele pentru a se contiuna ulterior sau pentru a se afișa punctajul
Display LCD - folosit pentru a afișa starea de joc și pentru leaderboard
Module software:
Hardware Design
Aici puneţi tot ce ţine de hardware design:
listă de piese
-
diagrame de semnal
rezultatele simulării
Piese:
ATmega328P Xplained Mini
-
Controler joystick KY-023
Card de memorie MediaRange micro SDHC 8Gb clasa 10
Modulul cititor de carduri microSD, Elektroweb
Schema electrică:
Am folosit culori diferite pentru fire pentru a fi ușor de urmărit.
Am folosit următorii pini:
ATmega328P Xplained Mini:
5V și GND - pentru a asigura energie electrică celorlalte componente
PC0 și PC1 - ADC-uri pentru inut-ul de la joystick
MOSI, MISO, SCLK - comunicarea prin SPI
PB0 și PB1 - slave select pentru display, respectiv SD card
PD2 - butonul joystick-ului
-
VCC și GND - pentru a asigra energie electică
RS, R/W și E - echivalentele SS, MOSI și SCLK, folosite pentru comunicarea peste SPI
PSB - setează display-ul în modul de SPI
BLA și BLK - setează gradul de luminozitate al ecranului
Controler joystick KY-023:
Modulul cititor de carduri microSD, Elektroweb:
VCC și GND - pentru a asigra energie electică
CS, MOSI, MISO și SCLK - folosite pentru comunicarea peste SPI
Software Design
Descrierea codului aplicaţiei (firmware):
mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
librării şi surse 3rd-party (e.g. Procyon AVRlib)
algoritmi şi structuri pe care plănuiţi să le implementaţi
(etapa 3) surse şi funcţii implementate
Ca mediu de dezvoltare, am folosit extensia PlatformIO pentru VS Code.
Am folosit librăria Petit FAT File pentru interfațarea cu cardul microSD și scheletul din laboratorul 5 pentru comunicarea peste SPI cu display-ul și cardul microSD și pentru comunicarea prin USART.
Scheletul de bază (până acum):
main - Se ocupă de inițializarea modulelor folosite (joystick, USART, timer, SPI, LCD, microSD) și cu bucla principală a jocului. Aici se stabilește în ce stare ne aflăm (joc propriu-zis, meniu etc) și se apelează funcțiile necesare. De asemenea, se citește și interpretează input-urile.
timers - Inițializează timer 1 pentru a număra milisecundele care trec de la începutul jocului. Este implementarea mea pentru laboratorul 3 și nu a fost modificat încă.
usart - Se ocupă de comunicarea cu laptop-ul prin USART. Luat din laboratorul 5.
lcd - Inițializază și trimite comenzi către display prin SPI. Inispirat din laboratorul 5. De asemenea, asigură funcții pentru desenarea fiecărui eran necesar în joc.
nameinput - Prezintă utilizatorului o modalitate de a-și salva numele.
menu - Are variabile necesare printării ecranului principal.
g2048 - Se ocupă de funcționalitatea jocului propriu-zis.
spi - Inițializază SPI și asigură funcții pentru selectarea dispozitivelor prin SS.
adc - Inițializază și citește ADC 0 și 1.
memory - Asigură funcții de deschidere a fișierului de configurații pentru joc și pentru scrierea și citirea din el.
pff - Petit FAT Filesystem
sd - Asigură funcții folosie de pff pentru manipularea cardului microSD. Luat din laboratorul 5.
Pentru a asigura funcționalitatea corespunzătoare și pentru a determina valorile pentru parametrii joystick-ului, am testat manual.
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Demo
Concluzii
Download
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
Link github
Arhivă cu proiectul
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Proiectul la data de 13 mai.
Din această poză se poate observa funcționalitatea ecranului și cum arată jocul.
În plus, se pot combina blocuri folosind input direcțional de la joystick și la un interval regulat, va apărea un nou bloc în joc, însă aceste funcționalități sunt greu de surprins.
Proiectul la data de 21 mai.
Am adăugat cardul microSD, meniu prinipal și meniu pentru introdus un nume.
Bibliografie/Resurse