Autorul poate fi contactat la adresa: Login pentru adresa
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.
Lista piese necesare:
-matrice de butoane 4×4
-display LCD ST7735
-placuta, microprocesor
-legaturile dintre placuta si ecran
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);
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
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.
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.