This shows you the differences between two versions of the page.
|
pm:prj2022:imacovei:alexandru.baciu0201 [2022/05/27 20:52] 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. | ||
| - | {{:pm:prj2022:imacovei:gameboy_block_scheme.png?200|}} | + | </note> |
| + | {{:pm:prj2022:imacovei:gameboy_block_scheme.png?600|Schemă bloc}} | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| Line 23: | Line 24: | ||
| </note> | </note> | ||
| - | {{:pm:prj2022:imacovei:gameboy_schematic.png?400 |Schemă electrică}} | + | {{:pm:prj2022:imacovei:gameboy_schematic.png?400|Schemă electrică}} |
| + | ===== Software Design ===== | ||
| + | |||
| + | <note tip> | ||
| + | * Am dezvolatat codul cu ajutorul Arduino IDE. | ||
| + | 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ă. | ||
| + | </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> | ||
| + | |||
| + | ===== Rezultate Obţinute ===== | ||
| + | |||
| + | {{:pm:prj2022:imacovei:gameboy_demo.jpg?600|Demo}} | ||
| + | <note tip> | ||
| + | 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. | ||
| + | </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.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 37: | 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> | ||