Dan-Valentin BÎNĂ (78691) - Joc Pong pe LCD
Autorul poate fi contactat la adresa: Login pentru adresa
Introducere
Proiectul consta in impmentearea unui joc de tip pong in 2 jucatori.
Acesta are ca si scop extinderea cunostiintelor de proiectare cu microprocesoare.
Am plecat de la cunoscutul joc pong, care a fost printre primele jocuri aparute.
Jocul are ca si utilitate relaxarea si distractia intre 2 prieteni
Descriere generală
Avem nevoie de 4 butoane pentru a controla directia de deplasarea a celor 2 porti, sus sau jos. Jocul se va termina cand un jucator va avea 5 puncte.
Schema bloc:
Hardware Design
Lista de piese:
Schema electrica:
Software Design
Am folosit ca mediu de dezolvatare AVR cu editorul Sublime Text.
Am utilizat gcc-avr, avr-libc, libusb-dev pe o masina virtuala de linux mint.
Pentru a afisa date pe display-ul Nokia 5110, am folosit header-ul lcd.h cu implementare in lcd.c. Se apeleaza functii precum:
void lcd_clear(void); - curatare ecran
void lcd_update(void); - update-aza datele afisate
void lcd_goto_xy(unsigned char x, unsigned char y); - pune cursroul la pixelul (x,y)
void lcd_str(char* str); - afiseaza un string acolo unde pozitia cursorului
void lcd_init(void); - initializeaza lcd
void lcd_contrast(unsigned char contrast); - setare contrast
Functiile implementate de mine sunt urmatoarele:
void init_buttons(void); - initializare butoane PD0, PD1, PD4, PD5
void check_direction(void); - setare directie in functie de butonul care a fost apasat
coord generate_coord(void); - generare coordonate pentru puc. coord este un pixel cu campurile x, y
void initial_screen(void); - setare imagine de inceput
void wait_start(void); - inceperea jocului prin apasarea butonului de start
void init_bar(uint32_t seed); seteaza coordonatele initiale pentru cele 2 bari si pentru puc
void update_game(void)l - update al pozitiei obiectelor la fiecare pas
void end_game(char* str); - afisare invingator
void draw_game(void); - afiseaza obiecte pe lcd
int main(void); - se apeleaza functiile necesare derularii jocului
Rezultate Obţinute
Rezultate obtinute:
Concluzii
Initial am folosit un Display 12864 v2.0 128×64 pixel. Am intampinat probleme cu el deoarece acesta nu a functionat, cu toate ca aparea ca si alimentat. Acest lucru m-a ajutat sa invat sa fac debug pe hardware, ceea ce nu facusem prea mult pana acum si am ajuns la concluzia ca display-ul avea niste probleme legate de luminozitate. Pentru a o regla aveam nevoie de alte componente hardware, asa ca am folosit un alt display si ulterior nu au mai aparut probleme in realizarea implementarii.
Consider ca pasii spre realizarea proiectului ajuta la o consolidare buna a cunostiintelor acumulate in cadrul materiei.
Download
Bibliografie/Resurse