Table of Contents

Log 2048

Introducere

Prezentarea pe scurt a proiectului vostru:

  • ce face
  • care este scopul lui
  • care a fost ideea de la care aţi pornit
  • de ce credeţi că este util pentru alţii şi pentru voi

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ă

O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.

Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html

Schema bloc 2048

Module hardware:

Module software:

Hardware Design

Aici puneţi tot ce ţine de hardware design:

Piese:

Schema electrică:

Schema Electrică

Am folosit culori diferite pentru fire pentru a fi ușor de urmărit.

Am folosit următorii pini:

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):

  1. 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.
  2. 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ă.
  3. usart - Se ocupă de comunicarea cu laptop-ul prin USART. Luat din laboratorul 5.
  4. 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.
  5. nameinput - Prezintă utilizatorului o modalitate de a-și salva numele.
  6. menu - Are variabile necesare printării ecranului principal.
  7. g2048 - Se ocupă de funcționalitatea jocului propriu-zis.
  8. spi - Inițializază SPI și asigură funcții pentru selectarea dispozitivelor prin SS.
  9. adc - Inițializază și citește ADC 0 și 1.
  10. memory - Asigură funcții de deschidere a fișierului de configurații pentru joc și pentru scrierea și citirea din el.
  11. pff - Petit FAT Filesystem
  12. 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.

Poză cu proiectul

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.

Poză cu proiectul 2

Proiectul la data de 21 mai.

Am adăugat cardul microSD, meniu prinipal și meniu pentru introdus un nume.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Display LCD 128X64 ST7920

Export to PDF