This shows you the differences between two versions of the page.
pm:prj2022:fstancu:snake [2022/05/23 14:04] stefan_madalin.toma [Hardware Design] |
pm:prj2022:fstancu:snake [2022/05/31 17:19] (current) stefan_madalin.toma |
||
---|---|---|---|
Line 13: | Line 13: | ||
Fiecare element consumat crește lungimea șarpelui, astfel încât evitarea coliziunii cu sine devine progresiv mai dificilă.\\ | Fiecare element consumat crește lungimea șarpelui, astfel încât evitarea coliziunii cu sine devine progresiv mai dificilă.\\ | ||
- | <hidden> | ||
- | <note tip> | ||
- | Prezentarea pe scurt a proiectului vostru: | ||
- | * ce face | ||
- | * care este scopul lui | ||
- | * care a fost ideea de la care aţi pornit | ||
- | * de ce credeţi că este util pentru alţii şi pentru voi | ||
- | </note> | ||
- | </hidden> | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
Line 36: | Line 27: | ||
{{:pm:prj2022:fstancu:schema_bloc_snake.png?700|}} | {{:pm:prj2022:fstancu:schema_bloc_snake.png?700|}} | ||
- | <hidden> | + | ===== Hardware Design ===== |
- | :!: TODO | + | |
- | <note tip> | + | ==== Bill of Materials ==== |
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | |
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | |
- | </note> | + | |
- | </hidden> | + | |
- | ===== Hardware Design ===== | + | |
^ Denumire Piesa ^ Cantitate ^ | ^ Denumire Piesa ^ Cantitate ^ | ||
| Arduino Uno | 1 | | | Arduino Uno | 1 | | ||
Line 54: | Line 39: | ||
+ | ==== Schema Breadboard ==== | ||
{{:pm:prj2022:fstancu:schema_breadboard_snake.png?700|}} | {{:pm:prj2022:fstancu:schema_breadboard_snake.png?700|}} | ||
+ | ==== Schema Electrica ==== | ||
{{:pm:prj2022:fstancu:schema_electrica_snake.png?700|}} | {{:pm:prj2022:fstancu:schema_electrica_snake.png?700|}} | ||
- | |||
- | <hidden> | ||
- | :!: TODO | ||
- | <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> | ||
- | </hidden> | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | :!: TODO | + | |
- | <note tip> | + | Medii de dezvoltare: |
- | Descrierea codului aplicaţiei (firmware): | + | * Arduino IDE, VS Code |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Fritzing - Schema electrica |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Creately - Schema bloc |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | Se folosesc urmatoarele 2 librarii: |
+ | * LEDMatrixMagic | ||
+ | * o versiune stripped down a librariei LedControl | ||
+ | * este folosita pentru interfatarea cu grid-ul de matrici led prin protocolul SPI | ||
+ | * Snake (librarie proprie) contine implementarea claselor: | ||
+ | * Game - o entitate care se ocupa de interpretarea input-ului, logica jocului de snake si rendare | ||
+ | * Snake - o lista + o functie de inaintare pe directia "direction" | ||
+ | * List - implementarea unei liste simplu inlantuite | ||
+ | |||
+ | Citirea si interpretarea inputului se face in functia loop(). | ||
+ | Timer-ul 1 se ocupa cu verificarea restrictiilor jocului si automat de rendarea pe ecran la fiecare secunda. Procesului de rendare a fost optimizat prin pastrarea tuturor LED-urilor aprinse. Astfel singurele exceptii cand interactiunea cu interfata LEDMatrixMagic este necesara sunt: | ||
+ | * un nou item este generat | ||
+ | * la fiecare miscare a sarpelui | ||
+ | * casuta in care se afla coada sarpelui se stinge | ||
+ | * capul inainteaza intr-o noua casuta (exceptie cand casuta contine un item) | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | :!: TODO | + | <html> |
- | <note tip> | + | <iframe width="720" height="415" |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | src="https://www.youtube.com/embed/1SMQvu_6fkM"> |
- | </note> | + | </iframe> |
+ | </html> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
:!: TODO | :!: TODO | ||
- | <note tip> | ||
- | </note> | ||
===== Download ===== | ===== Download ===== | ||
- | :!: TODO | + | |
- | <note warning> | + | [[https://github.com/Stefan9283/Snake|Repo Cod]] \\ |
- | 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ă ;-). | + | {{:pm:prj2022:fstancu:snake-sourcecode.zip|Source Code}} |
- | 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> | + | |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | :!: TODO | + | |
- | <note> | + | [[https://www.youtube.com/watch?v=2kr5A350H7E&ab_channel=SparkFunElectronics|Video despre Timer Interrupts]] \\ |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware. | + | [[https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf|Datasheet Matrici LED]] \\ |
- | </note> | + | [[http://wayoda.github.io/LedControl/|Documentatie LedControl]] |