This shows you the differences between two versions of the page.
pm:prj2022:ndrogeanu:consola [2022/05/29 20:21] george.pasca [Hardware Design] |
pm:prj2022:ndrogeanu:consola [2022/05/29 20:59] (current) george.pasca [Concluzii] |
||
---|---|---|---|
Line 28: | Line 28: | ||
* 1 senzor de gesturi | * 1 senzor de gesturi | ||
{{ :pm:prj2022:ndrogeanu:console_sch.png?nolink&700 |}} | {{ :pm:prj2022:ndrogeanu:console_sch.png?nolink&700 |}} | ||
- | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | ||
- | * listă de piese | ||
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | ||
- | * diagrame de semnal | ||
- | * rezultatele simulării | ||
- | </note> | ||
===== Software Design ===== | ===== Software Design ===== | ||
Bibliotecile auxiliare/3rd-party folosite in dezvoltarea proiectului sunt Adafruit_GFX.h si Adafruit_PCD8544 pentru ecranul Nokia 5510 si Arduino_APDS9960.h pentru senzorul de gesturi APDS9960. Am inclus, de asemenea, o parte a codului in fisierul graphics.h, care contine unele define-uri si cateva bitmap-uri, folosite drept grafica pentru jocuri. Pentru a modulariza diferitele functionalitati ale proiectului, am implementat design pattern-ul State (clasa Game si mostenitorii ei), care contine 3 metode necesare implementarii: getInput(), care citeste inputul (joystick, buton, senzor), update(), care realizeaza schimbari pe obiectele jocului respectiv, in functie de input/timp si draw(), care randeaza jocul pe ecranul LCD. Exista si clasa Console, care contine starea actuala (jocul) si cele 3 metode enumerate anterior, care sunt apelate in aceeasi ordine in loop(). | Bibliotecile auxiliare/3rd-party folosite in dezvoltarea proiectului sunt Adafruit_GFX.h si Adafruit_PCD8544 pentru ecranul Nokia 5510 si Arduino_APDS9960.h pentru senzorul de gesturi APDS9960. Am inclus, de asemenea, o parte a codului in fisierul graphics.h, care contine unele define-uri si cateva bitmap-uri, folosite drept grafica pentru jocuri. Pentru a modulariza diferitele functionalitati ale proiectului, am implementat design pattern-ul State (clasa Game si mostenitorii ei), care contine 3 metode necesare implementarii: getInput(), care citeste inputul (joystick, buton, senzor), update(), care realizeaza schimbari pe obiectele jocului respectiv, in functie de input/timp si draw(), care randeaza jocul pe ecranul LCD. Exista si clasa Console, care contine starea actuala (jocul) si cele 3 metode enumerate anterior, care sunt apelate in aceeasi ordine in loop(). | ||
{{ :pm:prj2022:ndrogeanu:console_flow2.png?nolink&400 |}} | {{ :pm:prj2022:ndrogeanu:console_flow2.png?nolink&400 |}} | ||
- | |||
- | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | ||
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | ||
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | ||
- | * (etapa 3) surse şi funcţii implementate | ||
- | </note> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | [[https://youtu.be/-vV1vTL9GHw|Demo video]] | ||
<note tip> | <note tip> | ||
Care au fost rezultatele obţinute în urma realizării proiectului vostru. | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
Line 55: | Line 40: | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Pot spune ca a fost un proiect interesant, unic fata de restul temelor, care m-a ajutat sa invat si ceva mai tehnic, cum ar fi lipitul firelor. Din punct de vedere al hardware-ului, proiectul nu este complicat, insa in privinta software-ului pot spune ca cea mai dificila problema cu care m-am confruntat a fost management-ul memoriei. | ||
===== Download ===== | ===== Download ===== | ||
+ | Cod sursa: {{:pm:prj2022:ndrogeanu:pascageorgealexandru_336cc.zip|Console}} | ||
- | <note warning> | ||
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | ||
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | ||
- | </note> | ||
- | |||
- | ===== Jurnal ===== | ||
- | |||
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
- | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== |