Differences

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

Link to this comparison view

pm:prj2024:alucaci:maria.costea2604 [2024/05/09 12:55]
maria.costea2604 [Hardware Design]
pm:prj2024:alucaci:maria.costea2604 [2024/05/23 17:12] (current)
maria.costea2604 [Concluzii]
Line 2: Line 2:
 ===== Introducere ===== ===== Introducere =====
  
-<note tip> 
   * Acest proiect reprezintă o implementare a clasicului joc Snake pe o placă Arduino.   * Acest proiect reprezintă o implementare a clasicului joc Snake pe o placă Arduino.
   * Scopul jocului este de a controla un șarpe care se mișcă pe un ecran și de a mânca bucăți de hrană pentru a crește lungimea șarpelui, evitând coliziunile cu marginile ecranului sau cu corpul său.   * Scopul jocului este de a controla un șarpe care se mișcă pe un ecran și de a mânca bucăți de hrană pentru a crește lungimea șarpelui, evitând coliziunile cu marginile ecranului sau cu corpul său.
   * Ideea de la care am porit a fost dorința de a reinterpreta un joc al copilăriei.   * Ideea de la care am porit a fost dorința de a reinterpreta un joc al copilăriei.
   * Consider că acest joc este util pentru a arăta cum se pot îmbina conceptele învățate la laborator pentru a implementa un joc mai complex.   * Consider că acest joc este util pentru a arăta cum se pot îmbina conceptele învățate la laborator pentru a implementa un joc mai complex.
-</​note>​ 
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> 
 Cu ajutorul unui breadboard și al firelor, cele patru componente: plăcuța Arduino, joystick-ul,​ matricea cu leduri și buzzer-ul sunt conectate. Jucătorul va controla snake-ul cu ajutorul joystick-ului și va încerca să strângă cât mai multe puncte prin a mânca luminițele de pe traseu. Buzzer-ul va scoate un sunet la pierderea jocului care se va întâmpla dacă șarpele atinge marginile matricei. Cu ajutorul unui breadboard și al firelor, cele patru componente: plăcuța Arduino, joystick-ul,​ matricea cu leduri și buzzer-ul sunt conectate. Jucătorul va controla snake-ul cu ajutorul joystick-ului și va încerca să strângă cât mai multe puncte prin a mânca luminițele de pe traseu. Buzzer-ul va scoate un sunet la pierderea jocului care se va întâmpla dacă șarpele atinge marginile matricei.
- 
-</​note>​ 
  
 {{ :​pm:​prj2024:​alucaci:​schema-bloc.png?​nolink&​300 |}} {{ :​pm:​prj2024:​alucaci:​schema-bloc.png?​nolink&​300 |}}
Line 19: Line 14:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> + Componente hardware:
- ​* ​Componente hardware:+
    - Matrice de leduri    - Matrice de leduri
    - Arduino Uno    - Arduino Uno
Line 30: Line 24:
    - Potentiometru    - Potentiometru
    - Ecran LCD    - Ecran LCD
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.ghttp://www.captain.at/​electronic-atmega16-mmc-schematic.png) + 
-  * diagrame de semnal ​ +{{ :​pm:​prj2024:​alucaci:​whatsapp_image_2024-05-16_at_23.13.32_1_.jpeg?​nolink&​300 |}} 
-  * rezultatele simulării +{{ :​pm:​prj2024:​alucaci:​whatsapp_image_2024-05-16_at_23.13.32.jpeg?​nolink&​300 |}} 
-</​note>​+{{ :​pm:​prj2024:​alucaci:​untitled_design_1_.png?​nolink&​300 |}}
  
 ===== Software Design ===== ===== Software Design =====
  
  
-<note tip> +  * Am implementat jocul în Arduino IDE 
-Descrierea codului aplicaţiei (firmware)+  * Am utilizat librăriile LedControl, LiquidCrystal,​ EEPROM 
-  * mediu de dezvoltare ​(if any(e.gAVR StudioCodeVisionAVR+  * Am utilizat o structura pentru șarpele din joc, care salveaza potitiile capului, corpului, lungimea sa si directia. 
-  * librării şi surse 3rd-party (e.gProcyon AVRlib) +  * Am utilizat o structura pentru mărul pe care trebuie să-l mănânce pentru a putea crește. După ce șarpele ajunge să ia un măr altul va apărea într-un alt loc random din matrice. 
-  * algoritmi şstructuri pe care plănuiţi să le implementaţ+Actualizarea și Mișcarea Șarpelui
-  * (etapa 3surse şfuncţii implementate +  * Direcția șarpelui este controlată ​de valorile citite de la joystick ​(varXPin și varYPin). Dacă joystick-ul este mișcat într-o direcție, direcția șarpelui se schimbă corespunzătorMișcarea șarpelui este realizată prin actualizarea poziției capului (head) pe baza direcției curente (dir). Dacă capul șarpelui se mută peste marginea matricei de LED-uripoziția sa este ajustată pentru a apărea pe partea opusă (efect de teleportare). 
-</​note>​+  * Coliziunea cu sine: Verifică dacă coordonatele capului șarpelui coincid cu oricare parte a corpului săuDacă da, jocul se resetează, iar jucătorul pierde o viață
 +  * Coliziunea cu mărul: Dacă capul șarpelui ajunge la poziția mărului, șarpele crește în lungime, scorul este incrementat șun nou măr este generat la poziții aleatorii. 
 +  * Matricea de LED-uri este actualizată pentru a afișa noua poziție a șarpelui șa mărului. Șarpele este desenat folosind array-ul pic, iar mărul este făcut ​să clipească pentru a fi mai vizibil. 
 +Meniuri șInterfață:​ 
 +  * Interfața jocului este realizată folosind un ecran LCD. Meniurile sunt navigate utilizând butonul joystick-ului. Există mai multe meniuri și submeniuri pentru opțiuni precum începerea jocului, setările, etc. 
 +Funcții Importante:​ 
 +    - playGame(): Gestionează logica principală a jocului. 
 +    - showIntro():​ Afișează introducerea jocului. 
 +    - showMenu(): Afișează meniul principal șpermite navigarea prin opțiuni. 
 +    - Update(): Actualizează starea șarpelui și a mărului. 
 +    - Render(): Redă (desenează) jocul pe matricea de LED-uri. 
 +    - calculateDeltaTime():​ Calculează timpul trecut între cadre pentru a controla viteza jocului. 
 +    - removeFirst():​ Elimină prima parte a corpului șarpelui pentru a simula mișcarea sa înainte. 
 + 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Pe matricea de leduri apare un model initial. Apăsarea joystick-ului duce la începerea jocului. Un snake format inițial din două cercuri luminoase se deplasează pe matrice și este controlat de către jucător cu ajutorul joystick-ului. La începutul jocului se poate auzi un cântecel, un sunet scurt se aude la mâncarea merelor, apare câte unul pe rând în locuri random. Șarpele crește odată cu mâncarea punctelor lumninoase și își pierde viața dacă își atinge propriul corp. La pierderea jocului se va auzi un sunet mai lung și mai puteric
-Care au fost rezultatele obţinute ​în urma realizării proiectului vostru+{{ :​pm:​prj2024:​alucaci:​whatsapp_image_2024-05-23_at_16.47.10_1_.jpeg?​nolink&​300 |}} 
-</​note>​+{{ :​pm:​prj2024:​alucaci:​whatsapp_image_2024-05-23_at_16.47.10.jpeg?​nolink&​300 |}}
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +Mi-a făcut plăcere să lucrez cu ceva nou și să pot implementa un joc clasic care mi-a plăcut foarte mult în copilărie.
 ===== Download ===== ===== Download =====
  
 <note warning> <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ă ;-). +{{:pm:prj2024:alucaci:costea_maria_cristina_pm.zip|}}
- +
-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>​ </​note>​
  
Line 65: Line 72:
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +2.05 - Alegerea temei proiectului
-</​note>​+
  
-===== Bibliografie/​Resurse =====+9.05 - Prezentarea pieselor pe care urma sa le utilizez 
 + 
 +12.05 - Legarea pieselor hardware
  
-<​note>​ +13.05 - Intocmirea documentatiei pentru partea de hardware 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+ 
 +16.05 Prezentarea celui de al-doilea milestone 
 + 
 +19.05 - 21.05 - Scrierea codului 
 + 
 +23.05 - Prezentarea ultimului milestone
 </​note>​ </​note>​
  
-<​html><​a class="media mediafile mf_pdf"​ href="?do=export_pdf">​Export to PDF</a></​html>​+===== Bibliografie/Resurse =====
  
 +  * https://​docs.arduino.cc/​built-in-examples/​usb/​JoystickMouseControl/​
 +  * https://​docs.arduino.cc/​built-in-examples/​display/​RowColumnScanning/​
 +  * https://​www.arduino.cc/​reference/​en/​libraries/​liquidcrystal/​
 +  * https://​projecthub.arduino.cc/​SURYATEJA/​use-a-buzzer-module-piezo-speaker-using-arduino-uno-cf4191
 +  * https://​docs.arduino.cc/​built-in-examples/​display/​RowColumnScanning/​
 +  * https://​docs.arduino.cc/​built-in-examples/​arduino-isp/​ArduinoToBreadboard/​
 +  * https://​www.tinkercad.com/​dashboard
pm/prj2024/alucaci/maria.costea2604.1715248536.txt.gz · Last modified: 2024/05/09 12:55 by maria.costea2604
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