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:

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

  • Numele și starea de joc - folosite pentru a juca jocul și pentru a-l salva

Hardware Design

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

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

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:
    • VCC și 5V - pentru a asigra energie electică
    • VRx și VRy - output-uri pentru direcția joystick-ului
    • SW - buton
  • 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):

  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

pm/prj2026/vlad.radulescu2901/vlad.ungureanu1808.txt · Last modified: 2026/05/21 17:07 by vlad.ungureanu1808
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