Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:imacovei:alexandru.baciu0201 [2022/05/27 20:56]
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 26: Line 26:
 {{:​pm:​prj2022:​imacovei:​gameboy_schematic.png?​400|Schemă electrică}} {{:​pm:​prj2022:​imacovei:​gameboy_schematic.png?​400|Schemă electrică}}
  
-{{:​pm:​prj2022:​imacovei:​gameboy_demo.jpg?​200|Demo}}+===== 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 40: 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>​
  
  
pm/prj2022/imacovei/alexandru.baciu0201.1653674174.txt.gz · Last modified: 2022/05/27 20:56 by alexandru.baciu0201
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0