{"id":2622,"date":"2019-12-18T00:12:17","date_gmt":"2019-12-18T00:12:17","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=2622"},"modified":"2019-12-18T00:12:18","modified_gmt":"2019-12-18T00:12:18","slug":"armduino-brazo-robotico","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/","title":{"rendered":"Armduino: Brazo Rob\u00f3tico"},"content":{"rendered":"\n<p class=\"has-text-color has-background has-large-font-size has-luminous-vivid-amber-color has-very-dark-gray-background-color\"><strong>Concepto<\/strong><\/p>\n\n\n\n<p class=\"has-normal-font-size\"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/strong>Tras\nbarajar varias ideas iniciales, se opt\u00f3 por la realizaci\u00f3n de un proyecto\norientado a controlar un brazo rob\u00f3tico. El brazo estar\u00eda controlado a trav\u00e9s\nde un segundo brazo el cu\u00e1l ser\u00eda movido por el usuario. En consecuencia, el\nprimer brazo, es decir, el brazo ejecutor, imitar\u00eda las acciones del primero.\nDe esta manera, nuestra intenci\u00f3n era realizar un prototipo el cu\u00e1l se pudiese\nen un futuro expandir y escalar sin tener que alterar en profundidad el\nproyecto.<\/p>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Inicialmente, se pretendi\u00f3 utilizar un brazo rob\u00f3tico que ya pose\u00eda uno de los miembros del equipo. Dicho brazo, el cual se muestra en la imagen a continuaci\u00f3n, constaba de un total de 5 motores para accionar todas las articulaciones y la pinza.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"592\" height=\"333\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-10.png\" alt=\"\" class=\"wp-image-2623\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-10.png 592w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-10-300x169.png 300w\" sizes=\"auto, (max-width: 592px) 100vw, 592px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">Todos los motores eran simples, es decir, tan solo constaban de dos cables: uno de entrada de potencia y otro de salida.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"293\" height=\"111\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-11.png\" alt=\"\" class=\"wp-image-2627\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Esto supuso un problema r\u00e1pidamente. Para poder controlar el brazo rob\u00f3tico correctamente nos era necesario poder girar los motores en ambas direcciones. Sin embargo, para poder realizar esta simple acci\u00f3n con motores de este tipo, la \u00fanica soluci\u00f3n posible es cambiar el sentido de la corriente. Tras una peque\u00f1a investigaci\u00f3n, hallamos una forma de poder llevar a cabo esta operaci\u00f3n a trav\u00e9s de un concepto conocido como \u201cPuente en H\u201d.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"270\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-12.png\" alt=\"\" class=\"wp-image-2628\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-12.png 440w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-12-300x184.png 300w\" sizes=\"auto, (max-width: 440px) 100vw, 440px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gracias\na este sistema nos es posible invertir el sentido de la corriente y, a su vez,\nel del motor. Activando los interruptores por pares (S1 con S4 y S3 con S2), la\ncorriente es capaz de fluir en ambos sentidos. Los interruptores en nuestro\ncaso fueron sustituidos por transistores ya implementados en un chip para poder\nser accionados mediante se\u00f1ales.<\/p>\n\n\n\n<p class=\"has-normal-font-size\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fuimos\ncapaces de mover un motor con esta implementaci\u00f3n, sin embargo, surgieron una\nmultitud de problemas nuevos que nos llevaron a desechar esta idea por completo\ndebido a su impracticabilidad en nuestras condiciones. Estos problemas\nabarcaban desde la falta de potencia para accionar varios motores\nsimult\u00e1neamente hasta la falta de entradas y salidas en la placa proporcionada\npara poder controlar todos los transistores. Adem\u00e1s, debido a que el brazo ya\nten\u00eda alg\u00fan tiempo, uno de los motores se encontraba inoperativo, lo que nos\nllev\u00f3 irrevocablemente a buscar una nueva soluci\u00f3n.<\/p>\n\n\n\n<p class=\"has-normal-font-size\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tras\ndeliberar entra varias opciones, nos decantamos por ser nosotros mismos los que\nconstruir\u00edamos el brazo, ya que adem\u00e1s ten\u00edamos que construir el brazo que iba\na ser accionado manualmente. De esta manera, ser\u00edamos capaces de utilizar los\nmotores que mejor se adaptasen a nuestras necesidades.<\/p>\n\n\n\n<p class=\"has-text-color has-background has-large-font-size has-luminous-vivid-amber-color has-very-dark-gray-background-color\"><strong>Dise\u00f1o &#8211; Imitaci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"has-normal-font-size\"><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong>El tipo de motor que mejor se adaptaba a nuestro proyecto era el conocido como servo motor.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"309\" height=\"232\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-13.png\" alt=\"\" class=\"wp-image-2629\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-13.png 309w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-13-300x225.png 300w\" sizes=\"auto, (max-width: 309px) 100vw, 309px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Este\ntipo de motor, a diferencia de uno m\u00e1s simple, cuenta con un tercer cable\nconocido como se\u00f1al. Gracias a esta se\u00f1al nos es posible especificar al motor\nuna posici\u00f3n en grados a la que deseamos que se desplace. Esta posici\u00f3n toma\nvalores entre 0 y 180, haci\u00e9ndolo as\u00ed mucho m\u00e1s preciso que los motores\nanteriores.<\/p>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Para no forzar los motores, el material elegido para el cuerpo del brazo fue madera ligera. As\u00ed, se lleg\u00f3 a la conclusi\u00f3n de que la mejor disposici\u00f3n era tener un movimiento rotatorio en la base, dos articulaciones y una pinza, teniendo en total cuatro motores.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"565\" height=\"417\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-14.png\" alt=\"\" class=\"wp-image-2630\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-14.png 565w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-14-300x221.png 300w\" sizes=\"auto, (max-width: 565px) 100vw, 565px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">Las se\u00f1ales fueron conectadas a los puertos 6, 7, 8 y 9 siguiendo el siguiente esquema.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"614\" height=\"355\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-15.png\" alt=\"\" class=\"wp-image-2631\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-15.png 614w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-15-300x173.png 300w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Posteriormente, se construy\u00f3 el segundo brazo. Esta vez, tanto en las articulaciones como en la base se dispusieron potenci\u00f3metros que, al mover el brazo, variar\u00edan su valor. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"177\" height=\"217\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-16.png\" alt=\"\" class=\"wp-image-2632\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">De esta manera, se pretend\u00eda mapear posteriormente estos valores para accionar los motores de manera autom\u00e1tica logrando as\u00ed que el primer brazo imitase a este otro. Para accionar la pinza se opt\u00f3 por la utilizaci\u00f3n de un bot\u00f3n, ya que solo constar\u00eda de dos posiciones discretas: abierta y cerrada. El esquema es el siguiente.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"395\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-17.png\" alt=\"\" class=\"wp-image-2633\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-17.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-17-300x200.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Los tres potenci\u00f3metros se conectaron a las entradas anal\u00f3gicas A0, A1 y A2. El bot\u00f3n de la pinza al pin 10, que actuar\u00eda como entrada digital.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"349\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-18.png\" alt=\"\" class=\"wp-image-2634\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-18.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-18-300x177.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Una\nvez estuvo todo conectado, se procedi\u00f3 a implementar el c\u00f3digo. Haciendo uso de\nla librer\u00eda \u201cServo.h\u201d pudimos controlar los motores.<\/p>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Primeramente, se declararon los cuatro motores junto a un array donde guardar los grados obtenidos del mapeo para poder realizar la imitaci\u00f3n.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"294\" height=\"192\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-20.png\" alt=\"\" class=\"wp-image-2636\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Tambi\u00e9n se declararon las entradas para la pinza y los potenci\u00f3metros, junto a un array para, al igual que en el caso anterior, poder realizar el mapeo.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"223\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-21.png\" alt=\"\" class=\"wp-image-2637\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-21.png 350w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-21-300x191.png 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Una vez se hubieron declarado todos los elementos necesarios, en la funci\u00f3n setup(), se hace uso de la funci\u00f3n attach() de la librer\u00eda \u201cServo\u201d. De esta manera, asignamos a cada motor una salida digital para poder controlarlos.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"390\" height=\"174\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-22.png\" alt=\"\" class=\"wp-image-2638\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-22.png 390w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-22-300x134.png 300w\" sizes=\"auto, (max-width: 390px) 100vw, 390px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Despu\u00e9s, en la funci\u00f3n loop() realizamos el mapeo. Para ello, leemos el valor anal\u00f3gico de cada potenci\u00f3metro a trav\u00e9s de la funci\u00f3n analogRead() y lo guardamos en el array declarado con anterioridad. Despu\u00e9s, usando la funci\u00f3n map(), transformamos ese valor a un grado entre 0 y 180 y lo almacenamos en el otro array, el correspondiente a los motores.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"187\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-23.png\" alt=\"\" class=\"wp-image-2639\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-23.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-23-300x95.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Por \u00faltimo, haciendo uso de la funci\u00f3n write() de la librer\u00eda \u201cServo\u201d, movemos cada motor a su valor mapeado, logrando as\u00ed que el brazo de los motores imite al brazo de los potenci\u00f3metros. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"541\" height=\"148\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-24.png\" alt=\"\" class=\"wp-image-2640\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-24.png 541w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-24-300x82.png 300w\" sizes=\"auto, (max-width: 541px) 100vw, 541px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">Adem\u00e1s, haciendo uso de una condici\u00f3n simple controlamos la apertura de la pinza de manera similar.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"237\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-25.png\" alt=\"\" class=\"wp-image-2641\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-25.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-25-300x120.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-color has-background has-large-font-size has-luminous-vivid-amber-color has-very-dark-gray-background-color\"><strong>Dise\u00f1o &#8211; Memoria de movimientos<\/strong><\/p>\n\n\n\n<p class=\"has-normal-font-size\"><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong>Posteriormente, con la intenci\u00f3n como ya se especific\u00f3 con anterioridad de poder escalar y aumentar este proyecto a \u00e1mbito m\u00e1s profesionales, se decidi\u00f3 implementar una memoria de movimientos para poder automatizar a\u00fan m\u00e1s el funcionamiento del brazo. El dise\u00f1o al que se lleg\u00f3 constaba de una estructura de datos en la cual se ir\u00edan guardando posiciones moment\u00e1neas del brazo. Posteriormente, se reproducir\u00edan en orden a trav\u00e9s de una interpolaci\u00f3n para simular el movimiento guardado. Para ello, se utilizaron dos botones, uno para grabar movimientos y otro para reproducirlos. Estos fueron conectados a las entradas anal\u00f3gicas A4 y A5, aunque actuar\u00edan como digitales en pr\u00e1ctica.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"394\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-26.png\" alt=\"\" class=\"wp-image-2644\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-26.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-26-300x199.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 En el c\u00f3digo, se declararon las entradas de los botones junto con la estructura de datos. Se decidi\u00f3 grabar un m\u00e1ximo de 20 movimientos, aunque este n\u00famero podr\u00eda ser aumentado sin suponer ning\u00fan problema de memoria a corto plazo. Tambi\u00e9n se utilizaron dos variables de control para evitar errores. Un booleano para evitar grabar m\u00e1s de un movimiento por pulsaci\u00f3n y un contador para controlar el n\u00famero total de movimientos.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"403\" height=\"215\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-27.png\" alt=\"\" class=\"wp-image-2645\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-27.png 403w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-27-300x160.png 300w\" sizes=\"auto, (max-width: 403px) 100vw, 403px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Primeramente, para poder grabar se implement\u00f3 una funci\u00f3n que haciendo uso del array utilizado anteriormente, donde se encuentran las posiciones actuales de los motores, y de la funci\u00f3n read() para conocer la posici\u00f3n de la pinza, almacenaba los datos en la posici\u00f3n correspondiente de la estructura de datos de la memoria de movimientos.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"199\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-28.png\" alt=\"\" class=\"wp-image-2646\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-28.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-28-300x101.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 A su vez, en la funci\u00f3n loop(), se implementaron unas condiciones de control para llamar a la funci\u00f3n cuando se pulsase el bot\u00f3n correspondiente.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"277\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-29.png\" alt=\"\" class=\"wp-image-2647\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-29.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-29-300x140.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Posteriormente,\npara lograr la funcionalidad correspondiente a la reproducci\u00f3n de los\nmovimientos se implement\u00f3 una funci\u00f3n que utilizando como par\u00e1metros los\nvalores de los grados a los cuales los motores tienen que desplazarse y un\ndeterminado tiempo, realizase la interpolaci\u00f3n y accionase los motores para\ncompletar el movimiento en el tiempo especificado. Se decidi\u00f3 realizar la\ninterpolaci\u00f3n en 10 pasos (number_steps). Sin embargo, este n\u00famero puede\ncambiarse, aunque puede llegar a provocar movimientos muy bruscos si se reduce\no aumenta demasiado.<\/p>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Primero, se calcula el tiempo que debe pasar entre cada paso (delay_time) para completar el movimiento en el tiempo dado. Despu\u00e9s, utilizando la diferencia entre el \u00e1ngulo final y actual de cada motor, se calcula lo que debe moverse cada uno en cada paso (step_motor).<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"180\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-31.png\" alt=\"\" class=\"wp-image-2649\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-31.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-31-300x91.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Despu\u00e9s, se desplazan los motores actualizando el valor en cada paso y esperando el tiempo necesario despu\u00e9s de cada iteraci\u00f3n de la interpolaci\u00f3n. El valor de la pinza se escribe directamente, sin interpolaci\u00f3n. Se realiza de esta manera para evitar problemas al coger objetos.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"369\" height=\"310\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-32.png\" alt=\"\" class=\"wp-image-2651\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-32.png 369w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-32-300x252.png 300w\" sizes=\"auto, (max-width: 369px) 100vw, 369px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Finalmente, debido a que esta interpolaci\u00f3n es una aproximaci\u00f3n ya que nos vemos obligados a trabajar con n\u00fameros enteros para calcular los grados, es necesario realizar una correcci\u00f3n final para completar el movimiento con exactitud.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"464\" height=\"242\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-33.png\" alt=\"\" class=\"wp-image-2652\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-33.png 464w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-33-300x156.png 300w\" sizes=\"auto, (max-width: 464px) 100vw, 464px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Para terminar, en la funci\u00f3n loop(), se implementan condiciones para controlar la activaci\u00f3n de la reproducci\u00f3n de los movimientos al pulsar el bot\u00f3n correspondiente. Para ello, se recorre la estructura de datos creada con anterioridad y se realizan llamadas a la funci\u00f3n de interpolaci\u00f3n.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"123\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-34.png\" alt=\"\" class=\"wp-image-2653\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-34.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-34-300x62.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-color has-background has-large-font-size has-luminous-vivid-amber-color has-very-dark-gray-background-color\"><strong>Dise\u00f1o &#8211; Control de la velocidad de\nreproducci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"has-normal-font-size\"><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong>Para lograr un mayor control de la reproducci\u00f3n de movimientos, se opt\u00f3 por incluir un control sobre la velocidad de la misma. Para ello, utilizando un potenci\u00f3metro de manera similar a los del brazo, se realiz\u00f3 un mapeo simple. Este potenci\u00f3metro se conect\u00f3 a la entrada A3.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"528\" height=\"337\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-35.png\" alt=\"\" class=\"wp-image-2654\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-35.png 528w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-35-300x191.png 300w\" sizes=\"auto, (max-width: 528px) 100vw, 528px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 En el c\u00f3digo se declar\u00f3 de manera similar a los otros potenci\u00f3metros.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"231\" height=\"25\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-36.png\" alt=\"\" class=\"wp-image-2655\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Y en la funci\u00f3n loop(), en el control de la reproducci\u00f3n, se realiz\u00f3 un mapeo del mismo para reproducir movimientos desde 100 milisegundos hasta 1000 milisegundos.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"20\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-38.png\" alt=\"\" class=\"wp-image-2657\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-38.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-38-300x10.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Sustituyendo el valor mapeado en la funci\u00f3n de interpolaci\u00f3n.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"838\" height=\"72\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-41.png\" alt=\"\" class=\"wp-image-2660\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-41.png 838w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-41-300x26.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-41-768x66.png 768w\" sizes=\"auto, (max-width: 838px) 100vw, 838px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-color has-background has-large-font-size has-luminous-vivid-amber-color has-very-dark-gray-background-color\"><strong>Dise\u00f1o &#8211; Pantalla LCD<\/strong><\/p>\n\n\n\n<p class=\"has-normal-font-size\"><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong>Como \u00faltima funcionalidad, se decidi\u00f3 implementar una pantalla LCD utilizando las \u00faltimas entradas libres en la placa (2, 3, 4, 5, 11 y 12). Al igual que con la memoria de movimientos, la intenci\u00f3n de esta pantalla es la de proporcionar al usuario retroalimentaci\u00f3n acerca de las acciones que tome como, por ejemplo, el total de movimientos grabados hasta el momento. El esquema de conexi\u00f3n es el siguiente.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"365\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-42.png\" alt=\"\" class=\"wp-image-2661\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-42.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-42-300x185.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Se implement\u00f3 en el c\u00f3digo utilizando la librer\u00eda \u201cLiquidCrystal.h\u201d, que aporta funciones para limpiar la pantalla, escribir o situar el cursor.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"378\" height=\"51\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-43.png\" alt=\"\" class=\"wp-image-2662\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-43.png 378w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-43-300x40.png 300w\" sizes=\"auto, (max-width: 378px) 100vw, 378px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Algunos ejemplos de los mensajes utilizados.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"240\" height=\"91\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-44.png\" alt=\"\" class=\"wp-image-2663\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"288\" height=\"106\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-45.png\" alt=\"\" class=\"wp-image-2664\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-color has-background has-large-font-size has-luminous-vivid-amber-color has-very-dark-gray-background-color\"><strong>Presupuesto y construcci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"has-normal-font-size\"><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong>El presupuesto final utilizado para la construcci\u00f3n del proyecto fue el siguiente:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"\"><tbody><tr><td>\n  Servo motores\n  <\/td><td>\n  13,99 \u20ac\n  <\/td><\/tr><tr><td>\n  Potenci\u00f3metros\n  <\/td><td>\n  8,99 \u20ac\n  <\/td><\/tr><tr><td>\n  Madera\n  <\/td><td>\n  6,5 \u20ac\n  <\/td><\/tr><tr><td>\n  Pintura en spray\n  <\/td><td>\n  7,6 \u20ac\n  <\/td><\/tr><tr><td>\n  Pomo y pestillo\n  <\/td><td>\n  3 \u20ac\n  <\/td><\/tr><tr><td>\n  Total\n  <\/td><td>\n  40,08 \u20ac\n  <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Para poder transportar el proyecto m\u00e1s f\u00e1cilmente, se decidi\u00f3 elaborar una caja para contener todos los cables y bater\u00edas de manera ordenada para poder ser utilizado sin la necesidad de conexi\u00f3n a un ordenador. Adem\u00e1s, tambi\u00e9n se realiz\u00f3 de esta manera para proporcionar una interfaz m\u00e1s s\u00f3lida y f\u00e1cil de utilizar. A continuaci\u00f3n, se muestran varias im\u00e1genes del proceso de construcci\u00f3n.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"333\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-46.png\" alt=\"\" class=\"wp-image-2665\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-46.png 593w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-46-300x168.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"573\" height=\"430\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-47.png\" alt=\"\" class=\"wp-image-2666\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-47.png 573w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-47-300x225.png 300w\" sizes=\"auto, (max-width: 573px) 100vw, 573px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"572\" height=\"429\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/12\/image-48.png\" alt=\"\" class=\"wp-image-2667\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-48.png 572w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-48-300x225.png 300w\" sizes=\"auto, (max-width: 572px) 100vw, 572px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 La siguiente imagen muestra una vista cenital del proyecto una vez fue terminado. En ella se pueden apreciar ambos brazos y la interfaz de usuario.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/i.gyazo.com\/1baf09f613351308016fb0bbfd974d8c.png\" alt=\"\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Concepto &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tras barajar varias ideas iniciales, se opt\u00f3 por la realizaci\u00f3n de un proyecto orientado a controlar un brazo rob\u00f3tico. El brazo estar\u00eda controlado a trav\u00e9s de un segundo brazo el cu\u00e1l ser\u00eda&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":2623,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2622","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-proyectos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Armduino: Brazo Rob\u00f3tico - Proyectos con Arduino.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Armduino: Brazo Rob\u00f3tico - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Concepto &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tras barajar varias ideas iniciales, se opt\u00f3 por la realizaci\u00f3n de un proyecto orientado a controlar un brazo rob\u00f3tico. El brazo estar\u00eda controlado a trav\u00e9s de un segundo brazo el cu\u00e1l ser\u00eda&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-18T00:12:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-18T00:12:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-10.png\" \/>\n\t<meta property=\"og:image:width\" content=\"592\" \/>\n\t<meta property=\"og:image:height\" content=\"333\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Administrador de la red\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Administrador de la red\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/\"},\"author\":{\"name\":\"Administrador de la red\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/bdc38fea664f13638d2a51f4d2fc7211\"},\"headline\":\"Armduino: Brazo Rob\u00f3tico\",\"datePublished\":\"2019-12-18T00:12:17+00:00\",\"dateModified\":\"2019-12-18T00:12:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/\"},\"wordCount\":1936,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/12\\\/image-10.png\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/\",\"name\":\"Armduino: Brazo Rob\u00f3tico - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/12\\\/image-10.png\",\"datePublished\":\"2019-12-18T00:12:17+00:00\",\"dateModified\":\"2019-12-18T00:12:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/12\\\/image-10.png\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/12\\\/image-10.png\",\"width\":592,\"height\":333},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/armduino-brazo-robotico\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Armduino: Brazo Rob\u00f3tico\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"name\":\"Proyectos con Arduino.\",\"description\":\"Blog de proyectos de Arduino de alumnos de la URJC\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\",\"name\":\"Universidad Rey Juan Carlos\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"width\":745,\"height\":288,\"caption\":\"Universidad Rey Juan Carlos\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/bdc38fea664f13638d2a51f4d2fc7211\",\"name\":\"Administrador de la red\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"caption\":\"Administrador de la red\"},\"sameAs\":[\"https:\\\/\\\/blogs.etsii.urjc.es\"],\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/etsiiadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Armduino: Brazo Rob\u00f3tico - Proyectos con Arduino.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/","og_locale":"es_ES","og_type":"article","og_title":"Armduino: Brazo Rob\u00f3tico - Proyectos con Arduino.","og_description":"Concepto &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tras barajar varias ideas iniciales, se opt\u00f3 por la realizaci\u00f3n de un proyecto orientado a controlar un brazo rob\u00f3tico. El brazo estar\u00eda controlado a trav\u00e9s de un segundo brazo el cu\u00e1l ser\u00eda&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2019-12-18T00:12:17+00:00","article_modified_time":"2019-12-18T00:12:18+00:00","og_image":[{"width":592,"height":333,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-10.png","type":"image\/png"}],"author":"Administrador de la red","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Administrador de la red","Tiempo de lectura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/"},"author":{"name":"Administrador de la red","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/bdc38fea664f13638d2a51f4d2fc7211"},"headline":"Armduino: Brazo Rob\u00f3tico","datePublished":"2019-12-18T00:12:17+00:00","dateModified":"2019-12-18T00:12:18+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/"},"wordCount":1936,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-10.png","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/","name":"Armduino: Brazo Rob\u00f3tico - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-10.png","datePublished":"2019-12-18T00:12:17+00:00","dateModified":"2019-12-18T00:12:18+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-10.png","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/12\/image-10.png","width":592,"height":333},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/armduino-brazo-robotico\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"Armduino: Brazo Rob\u00f3tico"}]},{"@type":"WebSite","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","name":"Proyectos con Arduino.","description":"Blog de proyectos de Arduino de alumnos de la URJC","publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization","name":"Universidad Rey Juan Carlos","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","width":745,"height":288,"caption":"Universidad Rey Juan Carlos"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/bdc38fea664f13638d2a51f4d2fc7211","name":"Administrador de la red","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","caption":"Administrador de la red"},"sameAs":["https:\/\/blogs.etsii.urjc.es"],"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/etsiiadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/2622","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=2622"}],"version-history":[{"count":7,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/2622\/revisions"}],"predecessor-version":[{"id":2668,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/2622\/revisions\/2668"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/2623"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=2622"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=2622"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=2622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}