Differences

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

Link to this comparison view

pm:prj2021:alazar:snake [2021/06/02 15:14]
ccristescu [Hardware Design]
pm:prj2021:alazar:snake [2021/06/03 15:56] (current)
ccristescu [Bibliografie/Resurse]
Line 8: Line 8:
 până la lovirea unui perete sub forma de obstacol. Am ales acest joc deoarece este printe primele jocuri încercate \\ până la lovirea unui perete sub forma de obstacol. Am ales acest joc deoarece este printe primele jocuri încercate \\
 de mine, iar cerințele sale corespund acestui tip de proiect. Utilitatea acestuia în prezent nu este una sugestivă, \\ de mine, iar cerințele sale corespund acestui tip de proiect. Utilitatea acestuia în prezent nu este una sugestivă, \\
-dar consider că ,în funcție de dificultate,​ te obligă ca utilizator să inveti ​să menții un nivel de concentrare ridicat \\ +dar consider că ,în funcție de dificultate,​ te obligă ca utilizator să inveți ​să menții un nivel de concentrare ridicat \\ 
-si iți antrenează anumite reflexe.+și iți antrenează anumite reflexe.
  
 ==== Descriere Generală ==== ==== Descriere Generală ====
-Pentru realizarea funcționalității,​ se va folosi un modul analog joystick care are rolul de a muta sarpele ​\\ +Pentru realizarea funcționalității,​ se va folosi un modul analog joystick care are rolul de a muta șarpele ​\\ 
-în toate directiile, sus-jos, ​stanga-dreapta în timp ce segmentul corpului ​sau este în continua ​translație \\+în toate directiile, sus-jos, ​stânga-dreapta în timp ce segmentul corpului ​său este în continuă ​translație \\
 într-un sens. Display-ul care va afișa simularea va fi un modul cu matrice de LED-uri bazat pe un driver \\ într-un sens. Display-ul care va afișa simularea va fi un modul cu matrice de LED-uri bazat pe un driver \\
-max7219 conectat la alte cateva ​componente cum ar fi rezistenta, condensatoare,​ pin headers. \\+max7219 conectat la alte câteva ​componente cum ar fi o rezistență, condensatoare,​ pin headers. \\
  
 {{:​pm:​prj2021:​alazar:​cristi_cristescu:​schema_boc_snake.png?​600|}} {{:​pm:​prj2021:​alazar:​cristi_cristescu:​schema_boc_snake.png?​600|}}
Line 22: Line 22:
   * Arduino UNO R3   * Arduino UNO R3
   * Breadboard   * Breadboard
-  * Fire: Mama-MamaTata-TataMama-Tata+  * Fire: Mamă-MamăTată-TatăMamă-Tată
   * Modul Buzzer Activ   * Modul Buzzer Activ
-  * Potentiometru+  * Potențiometru
   * Analog Joystick   * Analog Joystick
   * Matrice de LED-uri 8x8   * Matrice de LED-uri 8x8
Line 30: Line 30:
 === Schema electrica === === Schema electrica ===
  
-{{:​pm:​prj2021:​alazar:​cristi_cristescu:​snake_sch.png?​600|}}+{{:​pm:​prj2021:​alazar:​cristi_cristescu:​snake_sch.png?​700x400|}}
  
 === Board-ul === === Board-ul ===
  
 {{:​pm:​prj2021:​alazar:​cristi_cristescu:​snake_brd.png?​600|}} {{:​pm:​prj2021:​alazar:​cristi_cristescu:​snake_brd.png?​600|}}
 +
 +Acestea doua din urmă au fost realizate in utilitarul EAGLE.
 ==== Software Design ==== ==== Software Design ====
 +
 +Implementarea am realizat-o în VSCode cu ajutorul extensiei PlatformIO, ce permite lucrul cu module \\
 +si biblioteci pentru Arduino. Bibliotecile utilizate sunt: \\
 +    *Arduino.h
 +    *LedControl.h
 +
 +Simularea jocului se desfașoară în funcțiile **setup()** și **loop()**: \\
 +
 +=== Setup() ===
 +Realizează inițializările pinilor, ledurilor de pe matrice, recalibrează poziția de pornire \\
 +a Analog Joystickului și stabilește poziția șarpelui pe ecran. \\
 +
 +=== Loop() ===
 +
 +Scorul va fi afișat secvențial la serial monitor, urmând ca apoi să se genereze mâncarea în funcție \\
 +de pozițiile segmentului șarpelui. În continuare, se vor prelua inputurile din stick și se stabilește \\
 +următoarea direcție, verificând în același timp dacă sensul ales este la 180 de grade față de cel \\
 +precedent pentru ca respectiva "​coliziune"​ să fie invalidă și jocul să mearga mai departe. Ulterior, \\
 +se vor prelucra datele jocului, se actualizează lungimea șarpelui, se va verifica dacă jocul s-a finalizat, \\
 +se vor aprinde și stinge ledurile secvențial,​ generând mișcarea pe ecran. Buzzerul se va activa dupa ce mărul \\
 +a fost mâncat și după ce translația șarpelui s-a realizat. La finalul unui "​frame"​ din loop, se verifică dacă \\
 +jocul s-a caștigat sau pierdut, în acest caz, reinițializându-se toate variabilele din joc, iar ecranul \\
 +"va clipi" de 5 ori ca un efect de resetare a jocului.
 +
  
 ==== Rezultate Obtinute ==== ==== Rezultate Obtinute ====
  
 +{{:​pm:​prj2021:​alazar:​cristi_cristescu:​rezultat.jpeg?​600|}}
 +
 +Pot spune că am realizat ce mi-am propus de la început, nefiind ceva ieșit din comun. Dificultățile \\
 +le-am avut lucrând cu piesele, inițial lucram cu un Arduino Nano pe care îl legam direct de breadboard, \\
 +însă, deși am legat toți pinii cum trebuia, unele inputuri, chiar și alimentarea,​ nu funcționau cum trebuie \\
 +și nu îmi dădeam seama câte greșeli sunt în cod sau în schemă. Până la urmă, am scos Nano-ul din breadboard \\
 +și l-am legat direct cu fire, însă mai târziu, problema era că nu mai aveam suficiente fire pentru toate \\
 +componentele ca să le leg de placă, așa că am trecut la Uno (dispuneam de mai multe fire tată-tată). \\
 +
 +Video cu demo-ul: [[https://​www.youtube.com/​watch?​v=-oH9Ae4ZTDY|ProiectSnake]]
 ==== Concluzii ==== ==== Concluzii ====
 +
 +A fost interesant să lucrez cu componente fizice, dincolo de toate temele și proiectele software \\
 +din facultate. Personal, nu sunt mare fan al electronicilor,​ dar cumva proiectul acesta a reaprins \\
 +o speranță pentru sistemele embedded în viziunea mea, ele oferind aplicații interesante,​ \\
 +chiar utilități oamenilor. \\
  
 ==== Download ==== ==== Download ====
 +
 +{{:​pm:​prj2021:​alazar:​cristi_cristescu:​cristescu_cristian_335ca_proiect_pm.zip|}}
  
 ==== Jurnal ==== ==== Jurnal ====
 +
 +25.04.2021 : Alegerea proiectului \\
 +26.05.2021 : Inceperea partii software \\
 +27.05.2021 : Inceperea partii hardware \\
 +1.06.2021 : Finalizarea partilor hardware si software \\
 +2.06.2021 - 3.06.2021 : Realizarea documentatiei \\
  
 ==== Bibliografie/​Resurse ==== ==== Bibliografie/​Resurse ====
-{{:​pm:​prj2021:​alazar:​snake.pdf|}}+ 
 +https://​github.com/​wayoda/​LedControl/​blob/​master/​src/​LedControl.cpp \\ 
 +https://​howtomechatronics.com/​tutorials/​arduino/​8x8-led-matrix-max7219-tutorial-scrolling-text-android-control-via-bluetooth/​ \\ 
 +https://​create.arduino.cc/​projecthub/​rishab8551/​arduino-snake-game-using-arduino-and-martix-6c230c \\ 
 +https://​majicdesigns.github.io/​MD_MAX72XX/​page_parola.html \\ 
 + 
 +{{:​pm:​prj2021:​alazar:​cristi_cristescu:​snake.pdf|}} ​\\
pm/prj2021/alazar/snake.1622636055.txt.gz · Last modified: 2021/06/02 15:14 by ccristescu
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