This shows you the differences between two versions of the page.
pm:prj2022:imacovei:alexandru.baciu0201 [2022/05/27 21:05] alexandru.baciu0201 |
pm:prj2022:imacovei:alexandru.baciu0201 [2022/06/01 23:18] (current) alexandru.baciu0201 [Jurnal] |
||
---|---|---|---|
Line 8: | Line 8: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
+ | <note tip> | ||
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. | 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. | ||
+ | </note> | ||
{{:pm:prj2022:imacovei:gameboy_block_scheme.png?600|Schemă bloc}} | {{:pm:prj2022:imacovei:gameboy_block_scheme.png?600|Schemă bloc}} | ||
- | |||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 29: | Line 29: | ||
<note tip> | <note tip> | ||
- | Am dezvolatat codul cu ajutorul Arduino IDE. | + | * Am dezvolatat codul cu ajutorul Arduino IDE. |
- | Am folosit biblioteca standard <Arduino.h> pentru lucrul general, | + | Am folosit: |
- | <SPI.h> pentru conexiunea SPI dintre Arduino și LCD precum și | + | * biblioteca standard <Arduino.h> pentru lucrul general, |
- | <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ă. | + | * <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ă. | ||
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | 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() | ||
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | Concepte PM folosite: | ||
+ | * SPI | ||
+ | * Întreruperi | ||
+ | * Timer | ||
</note> | </note> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | {{:pm:prj2022:imacovei:gameboy_demo.jpg?600|Demo}} | ||
<note tip> | <note tip> | ||
- | {{:pm:prj2022:imacovei:gameboy_demo.jpg?200|Demo}} | + | 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. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
</note> | </note> | ||
+ | ===== Download ===== | ||
+ | |||
+ | <note tip> | ||
+ | Arhivă:{{:pm:prj2022:imacovei:332ca_baciu_alexandruvictor_gameboy.zip|}} | ||
+ | </note> | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
<note tip> | <note tip> | ||
- | 21.04.2022: Am adăugat tema proiectului, componentele si schema bloc (Milestone 1). | + | * 21.04.2022: Am adăugat tema proiectului, componentele si schema bloc (Milestone 1). |
- | 26.04.2022: Am început documentarea pentru a începe poriectul. | + | * 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). | + | * 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. | + | * 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ă. | + | * 27.05.2022: Update la cod precum și cele necesare pentru Milestone 2, printre care reformatare la pagină. |
+ | * 01.06.2022: Ultimul update la cod + bug fixes + game smoothening | ||
</note> | </note> | ||
Line 55: | Line 78: | ||
<note tip> | <note tip> | ||
- | Link la pagina asta just in case: | + | * Link la pagina asta just in case: https://ocw.cs.pub.ro/courses/pm/prj2022/imacovei/alexandru.baciu0201 |
- | https://ocw.cs.pub.ro/courses/pm/prj2022/imacovei/alexandru.baciu0201 | + | * Datasheet Arduino: https://ocw.cs.pub.ro/courses/_media/pm/doc8272.pdf |
+ | * Datasheet ST7920: https://www.waveshare.com/datasheet/LCD_en_PDF/ST7920.pdf | ||
</note> | </note> | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||