{"id":501,"date":"2014-08-10T21:30:17","date_gmt":"2014-08-10T20:30:17","guid":{"rendered":"http:\/\/ofalcao.pt\/blog\/?p=501"},"modified":"2014-08-10T21:30:17","modified_gmt":"2014-08-10T20:30:17","slug":"ev3dev-controlando-motores","status":"publish","type":"post","link":"https:\/\/ofalcao.pt\/blog\/2014\/ev3dev-controlando-motores","title":{"rendered":"ev3dev &#8211; controlando motores"},"content":{"rendered":"<p>A utiliza\u00e7\u00e3o b\u00e1sica do LEGO Mindstorms EV3 com ev3dev fica completa com a utiliza\u00e7\u00e3o de motores.<\/p>\n<p>Ligando um motor (<a title=\"LEGO: 45503 EV3 Medium Servo Motor\" href=\"http:\/\/shop.lego.com\/en-US\/EV3-Medium-Servo-Motor-45503\">45503<\/a> EV3 Medium Servo Motor) na ficha A, o sistema operativo acusa o evento:<\/p>\n<pre>root@ev3dev:~# dmesg\n(...)\ntacho-motor tacho-motor0: Tacho motor registered.\nev3-tacho-motor outA:motor: A Tacho Motor connected to port outA gpio 91 irq 192\n\n<\/pre>\n<p>Uma vez mais \u00e9 necess\u00e1rio consultar a <a href=\"https:\/\/github.com\/ev3dev\/ev3dev\/wiki\/Using-Motors\">wiki do projecto ev3dev<\/a> para entender como aceder aos motores. Estes tamb\u00e9m s\u00e3o mapeados pelo sistema operativo, desta vez em &#8220;\/sys\/bus\/legoev3\/devices\/&#8221; e em &#8221; \/sys\/class\/tacho-motor\/&#8221;:<\/p>\n<pre>root@ev3dev:~# ls \/sys\/bus\/legoev3\/devices\/\nin2\u00a0 in3\u00a0 in4\u00a0 outA\u00a0 outA:motor\u00a0 outB\u00a0 outC\u00a0 outD<\/pre>\n<pre>root@ev3dev:~# ls \/sys\/class\/tacho-motor\/\ntacho-motor0<\/pre>\n<pre>root@ev3dev:~# ls \/sys\/class\/tacho-motor\/tacho-motor0\ndevice\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 port_name\u00a0\u00a0\u00a0\u00a0\u00a0 pulses_per_second\u00a0\u00a0\u00a0\u00a0 reset\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0speed_regulation_K\u00a0 subsystem\nduty_cycle\u00a0\u00a0\u00a0\u00a0 position\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pulses_per_second_sp\u00a0 run\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0speed_regulation_P\u00a0 time_sp\nduty_cycle_sp\u00a0 position_mode\u00a0 ramp_down_sp\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 run_mode\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0state\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 type\nestop\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 position_sp\u00a0\u00a0\u00a0 ramp_up_sp\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 speed_regulation_D\u00a0\u00a0 \u00a0stop_mode\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 uevent\npolarity_mode\u00a0 power\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 regulation_mode\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 speed_regulation_I\u00a0\u00a0 \u00a0stop_modes<\/pre>\n<p>Muito informa\u00e7\u00e3o para processar mas para come\u00e7ar podemos confirmar apenas o tipo de motor:<\/p>\n<pre>root@ev3dev:~# cat \/sys\/class\/tacho-motor\/tacho-motor0\/type\nminitacho<\/pre>\n<p>Os motores Mindstorms s\u00e3o inicializados no modo &#8220;run forever&#8221;, podemos tamb\u00e9m confirmar isso:<\/p>\n<pre>root@ev3dev:~# cat \/sys\/class\/tacho-motor\/tacho-motor0\/run_mode\nforever<\/pre>\n<p>Neste modo podemos controlar o motor controlando 2 par\u00e2metros:<\/p>\n<ul>\n<li>\/sys\/class\/tacho-motor\/tacho-motor0\/duty_cycle_sp<\/li>\n<li>\/sys\/class\/tacho-motor\/tacho-motor0\/run<\/li>\n<\/ul>\n<p>o shell script abaixo faz o motor rodar 5 segundos num sentido e 5 segundos no sentido inverso, com um duty factor de 50%:<\/p>\n<pre> #!\/bin\/bash\n echo\u00a0\u00a0 0 &gt; \/sys\/class\/tacho-motor\/tacho-motor0\/duty_cycle_sp\n echo\u00a0\u00a0 1 &gt; \/sys\/class\/tacho-motor\/tacho-motor0\/run\n echo\u00a0\u00a0 50 &gt; \/sys\/class\/tacho-motor\/tacho-motor0\/duty_cycle_sp\n sleep 5s\n echo\u00a0\u00a0 0 &gt; \/sys\/class\/tacho-motor\/tacho-motor0\/duty_cycle_sp\n sleep 1s\n echo\u00a0\u00a0 -50 &gt; \/sys\/class\/tacho-motor\/tacho-motor0\/duty_cycle_sp\n sleep 5s\n echo\u00a0\u00a0 0 &gt; \/sys\/class\/tacho-motor\/tacho-motor0\/duty_cycle_sp\n echo\u00a0\u00a0 0 &gt; \/sys\/class\/tacho-motor\/tacho-motor0\/run<\/pre>\n<div class=\"jetpack-video-wrapper\"><iframe loading=\"lazy\" title=\"ev3dev motor\" width=\"840\" height=\"473\" src=\"https:\/\/www.youtube.com\/embed\/OIbpFQZ34Gk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A utiliza\u00e7\u00e3o b\u00e1sica do LEGO Mindstorms EV3 com ev3dev fica completa com a utiliza\u00e7\u00e3o de motores. Ligando um motor (45503 EV3 Medium Servo Motor) na ficha A, o sistema operativo acusa o evento: root@ev3dev:~# dmesg (&#8230;) tacho-motor tacho-motor0: Tacho motor registered. ev3-tacho-motor outA:motor: A Tacho Motor connected to port outA gpio 91 irq 192 Uma &hellip; <a href=\"https:\/\/ofalcao.pt\/blog\/2014\/ev3dev-controlando-motores\" class=\"more-link\">Continuar a ler<span class=\"screen-reader-text\"> &#8220;ev3dev &#8211; controlando motores&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[16,18,19,20],"tags":[205,86],"series":[],"class_list":["post-501","post","type-post","status-publish","format-standard","hentry","category-geek","category-lego","category-lego-mindstorms","category-linux","tag-ev3dev","tag-motor"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2Mhyv-85","_links":{"self":[{"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/posts\/501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/comments?post=501"}],"version-history":[{"count":0,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/posts\/501\/revisions"}],"wp:attachment":[{"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/media?parent=501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/categories?post=501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/tags?post=501"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/series?post=501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}