This is an old revision of the document!
Gameboy
Introducere
Tema proiectului este o consolă de tip Gameboy care are câteva jocuri foarte simpliste și un meniu de selecție a acestora. Jocurile vor avea animații minimaliste, sunete asemănătoare și vor fi controlate prin câteva butoane. Acesta poate fi folosit pentru divertisment.
Descriere generală
Utilizatorul interacționeaza cu meniul și cu jocurile cu cele 3 butoane expuse și primește output vizual pe LCD și sonor prin buzzer în funcție de acțiunile sale.
Hardware Design
Software Design
Am folosit:
biblioteca standard <Arduino.h> pentru lucrul general,
<SPI.h> pentru conexiunea SPI dintre Arduino și LCD precum și
<U8g2lib.h> pentru lucrul cu ecranul, interfațarea SPI mai ușoară precum și câteva primitive grafice pentru afișare de text, forme geometrice de bază.
Ca organizare a codului (arhiva mai jos) am folosit un model similar aplicațiilor grafice (cum ar fi temele de semestrul trecut de la EGC în OpenGL), prin apelul în loop-ul default al anumitor funcții:
u8g2.clearBuffer() - funcție de bibliotecă, șterge imaginea din buffer
handle_ui() - se opcupă de afișarea pe ecran fie a meniului principal fie a stării jocului, depinzând de cum s-a interacționat cu consola
u8g2.sendBuffer() - funcție de bibliotecă, copiază imaginea din buffer la ecran
check_buttons() - citește starea de apăsare a butoanelor și updatează variabilele interne
update_time() - updatează entitățile dependente de timp din program, folosind millis()
Rezultate Obţinute
Am obținut un rezultat foarte plăcut din punctul meu de vedere, consola are meniu și UI-uri prietenoase, este foarte resposivă la input.
Download
Jurnal
21.04.2022: Am adăugat tema proiectului, componentele si schema bloc (Milestone 1).
26.04.2022: Am început documentarea pentru a începe poriectul.
12.05.2022: Am observat că este nevoie de atașarea fizică a unui pin header (baretă continuă de pini LCD-ului, fiind nevoie de lipituri).
14.05.2022: Primul prototip funcțional de LCD interfațat prin SPI cu un buton ce schimba afișajul unor primitive grafice pentru testing.
27.04.2022: Update la cod precum și cele necesare pentru Milestone 2, printre care reformatare la pagină.
Bibliografie/Resurse