This shows you the differences between two versions of the page.
pm:prj2024:amocanu:denis.zamfirescu [2024/05/27 05:25] denis.zamfirescu edit final 1 |
pm:prj2024:amocanu:denis.zamfirescu [2024/05/27 11:43] (current) denis.zamfirescu GATA |
||
---|---|---|---|
Line 11: | Line 11: | ||
*Senzorii vor fi folositi de catre jucator pentru a trimite inputuri sistemului si pentru a activa cele 2 servomotoare. | *Senzorii vor fi folositi de catre jucator pentru a trimite inputuri sistemului si pentru a activa cele 2 servomotoare. | ||
*Cele 2 servomotoare au rolul de a roti labirintul pe o anumita axa, astfel incat biluta din acesta sa se poata rostogoli in directia dorita | *Cele 2 servomotoare au rolul de a roti labirintul pe o anumita axa, astfel incat biluta din acesta sa se poata rostogoli in directia dorita | ||
- | {{:pm:prj2024:amocanu:diagraaama.png?nolink800|}} | + | {{:pm:prj2024:amocanu:diagramanoualabirint.jpeg?nolink800|}} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
*Placa Arduino Mega 2560 | *Placa Arduino Mega 2560 | ||
- | *4 x Senzori Proximitate HW-201 | + | *4 x Senzori Infrarosu HW-201 |
*2 x ServoMotor SG90 | *2 x ServoMotor SG90 | ||
*Fire de legatura | *Fire de legatura | ||
*1 x Breadboard | *1 x Breadboard | ||
+ | Schema electrica a circuitului este urmatoarea: | ||
+ | |||
+ | {{:pm:prj2024:amocanu:diagramalabirint.png?nolink800|}} | ||
+ | ===== Software Design ===== | ||
<note tip> | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | + | Mediul de dezvoltare folosit: Arduino 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 afla, pentru a nu permite jucatorului sa roteasca excesiv labirintul. Am folosit macrouri pentru a tine minte atribuirea pinilor de pe placuta Arduino. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon 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 proiectului: surse, 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 62: | 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> | ||