Duma-Alexandru-Cristian RADU (78727) - Nume proiect

Autorul poate fi contactat la adresa: Login pentru adresa

Completați după modelul dat și apoi scoateți note-urile colorate!

Introducere

Proiectul consta in implementarea clasicului joc Snake. Proiectul va utiliza un ecran LCD pentru afisaj si 4 butoane pentru directionarea sarpelui si pentru navigarea in meniu. De asemenea, vor fi folosite si cateva leduri pentru adaugarea unor efecte suplimentare in timpul jocului. Jocul se va sfarsi cand va avea loc orice fel de coliziune.

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

Descriere generală

Lista piese necesare:

-matrice de butoane 4×4

-display LCD ST7735

-placuta, microprocesor

-legaturile dintre placuta si ecran

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

Hardware Design

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

  • listă de piese
  • scheme electrice
  • diagrame de semnal
  • rezultatele simulării

Software Design

Proiectul a fost realizat in C, pe Windows, folosind Notepad++. Compilarea a fost realizata cu pachetul Mingw si MSYS. Am importat librariile necesare pentru Displayul ales, anume ST7735. Librariile folosite pentru punerea in functiune a display-ului sunt GFX.h si LCD.h

Functii folosite:

void GFX_init(int16_t width, int16_t height);

void GFX_draw_line(int16_t x1, int16_t y1,int16_t x2, int16_t y2, uint16_t color);

void GFX_draw_rect(int16_t x, int16_t y,int16_t width, int16_t height,uint16_t color, uint8_t fill);

void GFX_print_char(const char chr); void GFX_print_str(const char str[]); void GFX_set_cursor(int16_t x, int16_t y); void GFX_set_text_color(uint16_t color); void GFX_set_text_size(uint8_t size); void GFX_set_text_wrap(uint8_t wrap);

void LCD_init(void); void LCD_end(void);

void LCD_set_range(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2); void LCD_fill_screen(uint16_t color);

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

Rezultate Obţinute

Am reusit implementarea jocului iar experienta per total a fost foarte interesanta si in mod clar am invatat foarte multe lucruri, insa am intampinat si multe dificultati, gasirea pieselor a fost foarte dificila, initial am montat un display care s-a dovedit a nu fi functional si astfel proiectul a trecut prin mai multe forme pana a ajuns la cea finala. Sunt multumit de faptul ca am folosit o matrice de butoane ca solutie pentru input si a iesit mult mai elegant decat daca as fi lipit butoane separat

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

radu_duma_alexandru_343c2.zip

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:prj2017:avoinescu:dumitru_alin.

Jurnal

Initial am optat pentru un Display OLED de 0.96” dupa ce am esuat in a gasi orice alta solutie de afisare la mai mult de 5 magazine din Bucuresti, acesta fiind ultimul Display pe stoc la Optimus Digital. In urma montarii, placuta arata foarte bine ( Display-ul foarte compact a putut fi lipit direct pe placuta fara a fi necesar cablaj suplimentar), insa acesta s-a dovedit a fi nefunctional. Nu pornea nici prin simpla conectare la + si - de pe placuta. Initial am crezut ca problema este la placuta asa ca totul a fost verificat din nou si de-abia dupa ce am putut testa Display-ul pe placuta unui coleg am realizat ca este defect. A urmat vanarea unui alt Display la Optimus Digital, timp in care am inceput sa lucrez la Software deoarece altfel nu as fi avut timp sa termin proiectul. Dupa 2 zile am reusit achizitionarea a 2 Display-uri LED 1.44” 128×160. A urmat apoi procurarea mai multor librarii de pe Internet dedicate acestui Display si alegerea uneia cat mai apropiate de cerintele mele. Dupa aceasta etapa a urmat adaptarea codului C pentru Snake la functiile pentru afisajul pe Display. Ca si Hardware de Input am optat pentru o matrice de butoane 4×4 ( 16 butoane ) care vine lipita direct pe PORTD al placutei deoarece am considerat ca este o solutie mult mai eleganta si compacta fata de achizitionarea unor butoane separate, cabluri si eventual o placuta test pe care sa fie facut montajul, chiar daca nu sunt necesare 16 butoane pentru proiectul meu.

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

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

  • Documentația în format PDF
pm/prj2019/imatesica/snake2.txt · Last modified: 2021/04/14 17:07 (external edit)
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