This shows you the differences between two versions of the page.
pm:prj2021:amocanu:nokia-snake [2021/05/16 14:14] nicolae.croitoru99 |
pm:prj2021:amocanu:nokia-snake [2021/06/02 19:53] (current) nicolae.croitoru99 [Concluzii] |
||
---|---|---|---|
Line 6: | Line 6: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Proiectul presupune recrearea minimalista a jocului Snake pe un LCD, fiind controlat de un accelerometru. | + | <note tip> |
+ | * Ce face? | ||
+ | Utilizatorul foloseste rotirea pe axele gx si gy ale giroscopul din cadrul modulului MPU-6500 pentru controlul sarpelui. Pe modulul LCD se va misca sarpele, care va urmari sa ajunga la mancare. | ||
+ | * Care este scopul lui? | ||
+ | Scopul proiectului este familiarizarea cu giroscopul si LCD-ul Nokia, folosite pentru finalizarea proiectului. | ||
+ | * Care a fost ideea de la care aţi pornit? | ||
+ | Ideea de la care am pornit a fost recrearea minimalista a jocului Snake. | ||
+ | * De ce credeţi că este util pentru alţii şi pentru voi? | ||
+ | Este un un proiect destul de comun care ajuta la dezvoltarea cunostintelor folosirii Arduino. | ||
+ | </note> | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Sarpele va fi afisat pe ecran, iar folosind axele de inclinare a placutei se va controla deplasarea acestuia catre hrana. | + | ==== Schema bloc ==== |
- | + | {{:pm:prj2021:amocanu:schema_bloc_nokia_snake.png?600|}} | |
- | ===== Schema bloc ===== | + | |
- | [[https://imgur.com/gallery/Op1qqm7|{{wiki:schema_bloc.png}}]] | + | |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 19: | Line 26: | ||
- Breadboard | - Breadboard | ||
- Cablu USB | - Cablu USB | ||
- | - Fire de legatura | + | - Fire tata-tata |
- Modul Accelerometru și Giroscop MPU6500 GY | - Modul Accelerometru și Giroscop MPU6500 GY | ||
- Modul LCD Nokia 5110 (84×48) | - Modul LCD Nokia 5110 (84×48) | ||
- | - Rezistente | + | - Rezistente(1x330Ω, 1x1k, 4x10k) |
+ | |||
+ | ==== Schemă electrică ==== | ||
+ | {{:pm:prj2021:amocanu:nokia_snake_electric_scheme.png?600|}} | ||
+ | |||
+ | {{:pm:prj2021:amocanu:rezultate_hardware.jpg?600|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Descrierea codului aplicaţiei (firmware): | ||
+ | * mediu de dezvoltare: Arduino IDE | ||
+ | * librării şi surse 3rd-party: | ||
+ | * Adafruit_GFX.h | ||
+ | * Adafruit_PCD8544.h | ||
+ | * MPU6050.h | ||
+ | * stdlib.h | ||
+ | * time.h | ||
+ | * Wire.h | ||
+ | * algoritmi şi structuri pe care plănuiţi să le implementaţi | ||
+ | * coliziunea intre doua puncte | ||
+ | * instructiuni de logica (if, for) | ||
+ | * surse şi funcţii implementate | ||
+ | * surse: | ||
+ | - https://github.com/jrowberg/i2cdevlib/tree/master/Arduino (pentru MPU) | ||
+ | - https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library (pentru LCD) | ||
+ | - https://github.com/adafruit/Adafruit-GFX-Library (pentru LCD) | ||
+ | * functii: | ||
+ | - intro(): afisarea mesajului de inceput pe lcd | ||
+ | - init_snake(): la fiecare joc nou se initializeaza scorul, directiile, pozitiile hranei si a capului sarpelui, lungimea sarpelui, corpul sarpelui (si desenarea acestuia implicita). | ||
+ | - setup(): initializarea giroscopului, lcd-ului, apelul intro() si init_snake(), definirea altor variabile legate de joc si scor. | ||
+ | - loop(): verificarea daca jocul trebuie sa reinceapa (trebuie reinitializat sarpele), citirea de la accelerometru/giroscop a datelor, desenare margini (ziduri), desenarea sarpelui, desenarea hranei, implementarea logicii miscarii, coliziunea dintre capului sarpelui si margini, respectiv mancare, generearea unei pozitii noi pentru hrana, daca meciul se termina, se afiseaza mesajul de final impreuna cu scorul curent si cel mai bun scor din sesiunea curenta, iar apoi reincepe jocul). | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | *Demo: | ||
+ | https://www.youtube.com/watch?v=ZlC1YUIlON0 | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Overall, it was pretty funny ^_^. A fost interesant sa lucrez la proiect, pentru partea de hardware am fost putin confuz la inceput, insa a mers totul bine, iar pe partea de software a durat ceva pana sa folosesc datele corect de la giroscop. Am finalizat proiectul, daca m-as fii apucat mai din timp probabil as mai fii incercat sa implementez cateva mici functionalitati, precum cresterea in lungime a sarpelui la fiecare punct in plus si cresterea vitezei acestuia la anumite milestone-uri de punctaj. | ||
===== Download ===== | ===== Download ===== | ||
- | + | *Cod sursă: | |
- | ===== Jurnal ===== | + | https://github.com/valentin-99/Nokia-Snake |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
Line 38: | Line 75: | ||
https://ocw.cs.pub.ro/courses/pm/prj2021/amocanu/nokia-snake | https://ocw.cs.pub.ro/courses/pm/prj2021/amocanu/nokia-snake | ||
*Aceasta pagina in format PDF: | *Aceasta pagina in format PDF: | ||
- | https://drive.google.com/file/d/1hptbS0rITnZlmxchFRIfEvaMNP0-SWoS/view?usp=sharing | + | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |
+ | *Resurse folosite: | ||
+ | https://create.arduino.cc/projecthub/muhammad-aqib/interfacing-nokia-5110-lcd-with-arduino-7bfcdd | ||
+ | |||
+ | https://lastminuteengineers.com/nokia-5110-lcd-arduino-tutorial/ | ||
+ | |||
+ | https://robojax.com/learn/arduino/?vid=robojax-MPU9250 |