Differences

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

Link to this comparison view

pm:prj2024:amocanu:denis.zamfirescu [2024/05/05 21:27]
denis.zamfirescu
pm:prj2024:amocanu:denis.zamfirescu [2024/05/27 11:43] (current)
denis.zamfirescu GATA
Line 1: Line 1:
-====== ​Rhythm Game ======+====== ​Ball in a Maze Puzzle ​======
 ===== Introducere ===== ===== Introducere =====
  
-Acest proiect reprezinta implementarea unui joc de tipul Rhythm Game pe o placuta ​arduino. Jucatorul ​va fi nevoit sa puna mana deasupra inputurilor in ritmul afisat ​pe ecranul LCDJocul se termina atunci cand jucatorul face 3 greselisau daca reuseste ​sa termine intregul nivel(sper sa fi destul de greu =)).+Acest proiect reprezinta implementarea unui joc de tip labirint ​pe o placuta ​Arduino Mega 2560. Jucatorul ​are rolul de a ghida o bila printr-un labirint, folosindu-se de cei 4 senzori de proximitate ​pe care ii are la dispozitieFiecare senzor roteste labirintul intr-o anumita directieastfel incat bila sa se poata rostogoli.
  
-Ideea a pornit de la faptul ca mereu jocurile de genul de pe telefon/​PC ​mi s-au parut amuzante, asa ca am zis sa incerc ​si eu sa creez unul, sper ca fun(si nu frustrant din cauza senzorilor ​:-().+Ideea acestui proiect ​mi s-parut interesanta ​si parea un joc distractiv de jucat :-D
  
 ===== Descriere generală ===== ===== Descriere generală =====
  
-  *Un display LCD va afisa un meniu si va astepta un input de la usermoment ​in care va incepe sa afiseze pe ecran secventa de inputuri pe care o voi pune eu cap la cap (probabil off-beat si super grea fara motiv = limit testing). +  *Jucatorului ii sunt prezentati 4 senzori ​de proximitatefiecare corespunzand unei directii ​in care labirintul poate fi rotit 
-  *Senzorii vor fi folositi de catre jucator pentru a trimite inputuri sistemului, fiecare corespunzand unui anumit tip de input de pe display+  *Senzorii vor fi folositi de catre jucator pentru a trimite inputuri sistemului ​si pentru a activa cele 2 servomotoare
-  *De fiecare data cand jucatorul rateaza timingul unui inputun led se va aprinde. Dupa 3 leduri aprinse, jucatorul pierde si se afiseaza pe display un alt meniu, care reflecta performanta acestuia.+  *Cele 2 servomotoare au rolul de a roti labirintul pe o anumita axaastfel incat biluta din acesta sa se poata rostogoli in directia dorita 
 +{{:​pm:​prj2024:​amocanu:​diagramanoualabirint.jpeg?​nolink800|}}
  
-<note tip> +===== Hardware Design =====
-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 +  *Placa Arduino Mega 2560 
-</​note>​+  *4 x Senzori Infrarosu HW-201 
 +  *2 x ServoMotor SG90 
 +  *Fire de legatura 
 +  *1 x Breadboard
  
-===== Hardware Design ===== +Schema electrica a circuitului este urmatoarea:
- +
-  *placuta +
-  *display +
-  *4 x senzori +
-  *difuzor(pentru muzica) +
-  *fire +
-  *rezistente+
  
 +{{:​pm:​prj2024:​amocanu:​diagramalabirint.png?​nolink800|}}
 +===== Software Design =====
 <note tip> <note tip>
-Aici puneţi tot ce ţine de hardware design+Mediul ​de dezvoltare folositArduino IDE 
-  * listă de piese +Librarii folosite: Servo, New Ping (Instalate direct in IDE)
-  * 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>​ </​note>​
  
-===== Software Design =====+Descrierea implementarii:​
  
 +Implementarea consta in verificarea periodica a semnalelor primite de la senzori. Daca unul dintre acestia detecteaza ca jucatorul si-a apropiat mana de el, algoritmul trimite un semnal servomotorului corespunzator si il roteste cu un anumit numar de grade.
 +Functii definite:
 +  *setup: aici sunt definite starile pinilor si sunt atasate porturi servomotoarelor,​ folosind functia attach din libraria Servo. De asemenea, este pornita comunicarea seriala, cu un baud de 9600
 +  *loop: aici se seteaza starea initiala a servomotoarelor(in cadrul primului loop), iar apoi se citesc datele de la senzori. Daca unul dintre senzori este activat, se roteste servomotorul corespunzator acestuia cu un anumit numar de grade.
  
 <note tip> <note tip>
-Descrierea codului aplicaţiei (firmware):​ +Am folosit variabile globale pentru a defini in cod servomotoarele si pentru a retine unghiurile la care acestea se aflapentru a nu permite jucatorului sa roteasca excesiv labirintulAm folosit macrouri pentru a tine minte atribuirea pinilor de pe placuta Arduino.
-  * mediu de dezvoltare (if any) (e.g. AVR StudioCodeVisionAVR) +
-  * librării şi surse 3rd-party (e.gProcyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate+
 </​note>​ </​note>​
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +Rezultatul obtinut in urma proiectului este un joculet complet functional, pe care utilizatorul il poate controla.
  
-<note tip> +Link catre demo-ul ​proiectului: https://​youtube.com/shorts/​4bMITtU0Oek 
-Care au fost rezultatele obţinute în urma realizării ​proiectului ​vostru. + 
-</note>+Poze cu circuitul (fara si cu labirint, respectiv):​ 
 + 
 +{{:​pm:​prj2024:​amocanu:​mazeball2.jpg?​nolink500|}} 
 +{{:​pm:​prj2024:​amocanu:​mazeball1.jpg?​nolink500|}}
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +Acest proiect mi s-a parut foarte amuzant de facut, si chiar mai greu de implementat decat mi s-a parut initial. Am invatat sa programez pe Arduino si sa folosesc diferite tipuri de senzori si servomotoare. :>
  
 ===== Download ===== ===== Download =====
- +Arhiva ​cu diagrame/​codul sursa pentru proiect:{{:pm:prj2024:amocanu:labirint.zip}}
-<note warning>​ +
-O arhivă (sau mai multe dacă este cazul) ​cu fişierele obţinute în urma realizării proiectuluisurse, 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 ===== ===== Jurnal =====
Line 68: Line 64:
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +  ​*Documentatie librarie Servo.h: https://​www.arduino.cc/​reference/​en/​libraries/​servo/​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +  ​*Pinout Arduino Mega 2560: https://​store-usa.arduino.cc/​products/​arduino-mega-2560-rev3
-</note>+
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2024/amocanu/denis.zamfirescu.1714933674.txt.gz · Last modified: 2024/05/05 21:27 by denis.zamfirescu
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