This shows you the differences between two versions of the page.
pm:prj2021:avaduva:useless_box [2021/06/03 17:10] alexandru.vasilescu |
pm:prj2021:avaduva:useless_box [2021/06/03 22:48] (current) alexandru.vasilescu [Download] |
||
---|---|---|---|
Line 10: | Line 10: | ||
=== Schema bloc === | === Schema bloc === | ||
- | {{:pm:prj2021:avaduva:useless_box_block_diagram.png?1000|}} | + | {{:pm:prj2021:avaduva:useless_box_block_diagram.png?700|}} |
=== Componente === | === Componente === | ||
* Arduino UNO R3 | * Arduino UNO R3 | ||
Line 17: | Line 17: | ||
* Fire | * Fire | ||
* Baterie 9V | * Baterie 9V | ||
- | * breadboard | + | * Adaptor baterie |
+ | * Breadboard | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | | + | {{:pm:prj2021:avaduva:useless_box_hardware_design.png?700|}} |
+ | {{:pm:prj2021:avaduva:useless_box_legaturi.jpeg?700|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | * Mediu de dezvoltare: Arduino IDE | ||
+ | * Biblioteci folosite: Servo, Stdlib(pentru generarea numarului random) | ||
+ | In implementare am folosit o intrerupere externa pentru detectarea comutarii butonului si functii de librarie pentru actionarea servomotoarelor. | ||
+ | |||
+ | Am inceput prin a intializa servomotoarele. Le-am atasat pinii 8 si respectiv 9 si le-am setat la 0 la inceputul programului pentru a se reseta in orice stare ar fi ramas pe parcurs. Am setat pinul 4 ca input pentru a detecta schimbarile butonului. Am activat intreruperile externe si le-am activat doar pentru pinul 4. | ||
+ | |||
+ | In functia de tratare a intreruperilor doar modific o variabila globala, functiile mecanismului sunt apelate in loop(). Am ales doar modificare variabilei globale in tratarea intreruperii deoarece mecanismul are o durata de functionare foarte mare si ar fi intrerupt foarte mult decurgerea programului daca pastram totul in intrerupere. | ||
+ | |||
+ | Am creat mai multe functii, toate asemanatoare intre ele, pentru miscarile mecanismului. Prima data se executa rotatia servomotorului 1 care are rolul ridicarii capacului. | ||
+ | |||
+ | {{:pm:prj2021:avaduva:ridicare_capac.jpeg?300|}} | ||
+ | |||
+ | Apoi se executa rotatia servomotorului 2 pentru actionarea butonului. | ||
+ | |||
+ | {{:pm:prj2021:avaduva:actionare_buton.jpeg?300|}} | ||
+ | |||
+ | Apoi in ordine invers se revine la starea initiala. Am folosit delayuri diferite intre functii pentru a modifica viteza servomotoarelor sau durata de asteptare intre executii(intre cele 2 servomotoare). | ||
+ | |||
+ | In loop folosesc un switch pentru a detecta care functie sa fie apelata si un index i care este ales random intr-un interval pentru a face jucaria putin mai nedeterminista si amuzanta. | ||
+ | |||
+ | Ca functii utilizate: | ||
+ | * servo.atach pentru a atasa un pin la servomotor | ||
+ | * servo.write pentru a seta unghiul servomotorului | ||
+ | * delay | ||
+ | * rand | ||
+ | * sei si cli pentru setarea intreruperilor | ||
+ | |||
+ | |||
===== Rezultate obtinute ===== | ===== Rezultate obtinute ===== | ||
- | * TBD | + | * Demo: https://www.youtube.com/watch?v=axESkWFMhhI |
+ | |||
+ | Am obtinut o copie functionala dupa o jucarie populara in varianta ei de baza. In demo se poate observa cum functioneaza si cum este comutat butonul intai de mine si apoi comutat din nou de catre jucarie. Se pot observa 4 viteze si actionari diferite. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | * TBD | + | Am reusit sa inteleg notiunile prezentate la laborator si sa le aplic. A fost foarte interesant, desi as fi preferat sa aleg ceva putin mai complex proiectul meu fiind destul de simplu de realizat. Am intampinat si unele dificultati datorate puterii servomotoarelor si rezistentei butonului initial, dar am reusit sa inlocuiesc componente si sa trec peste probleme. |
===== Download ===== | ===== Download ===== | ||
- | * TBD | + | {{:pm:prj2021:avaduva:useless_box_vasilescualexandrumadalin_331cb.zip|Arhiva proiect}} |
- | ===== Jurnal ===== | + | {{:pm:prj2021:avaduva:useless_box.pdf|}} |
+ | ===== Jurnal ===== | ||
+ | * Realizare pagina | ||
+ | * Achizitionare componente | ||
+ | * Documentare | ||
+ | * Dezvoltare schema in Tinkercat | ||
+ | * Creare periferice(cutie, lamele de aluminiu) | ||
+ | * Asamblare componente | ||
+ | * Programare placuta | ||
+ | * Scriere documentatie | ||
+ | * Finalizare pagina wiki | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
+ | |||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab3-2021 | ||
+ | * https://en.wikipedia.org/wiki/Servo_(radio_control) | ||
+ | * https://forum.arduino.cc/t/help-with-code-and-wiring-involving-3-position-switch-dc-motor/370709 | ||
+ | * https://forum.arduino.cc/t/how-to-wire-these-6-terminal-toggle-switches-dpdt/527880 | ||
+ | * https://www.arduino.cc/reference/en/libraries/servo/ |