{"id":7426,"date":"2023-12-20T23:54:26","date_gmt":"2023-12-20T22:54:26","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=7426"},"modified":"2024-01-25T13:23:30","modified_gmt":"2024-01-25T12:23:30","slug":"vertical-plotter","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/","title":{"rendered":"Vertical Plotter"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">1. Introducci\u00f3n<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Objetivos<\/h2>\n\n\n\n<p>Despu\u00e9s de realizar una exhaustiva b\u00fasqueda creativa en el blog de la asignatura y en internet en general, el equipo lleg\u00f3 a un consenso sobre el objetivo principal del proyecto: Concebir, construir y programar un plotter vertical eficiente y preciso, capaz de transformar instrucciones G-Code en trazos f\u00edsicos sobre una superficie.<\/p>\n\n\n\n<p>La motivaci\u00f3n central de los estudiantes radicaba en obtener una experiencia integral en el dise\u00f1o de sistemas empotrados, fusionando aspectos te\u00f3ricos y pr\u00e1cticos de diversas disciplinas. Dado que el proyecto abordaba cuestiones matem\u00e1ticas, f\u00edsicas, electr\u00f3nicas y de programaci\u00f3n, se consider\u00f3 la opci\u00f3n m\u00e1s adecuada para alcanzar este objetivo ambicioso.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ideas y Consideraciones<\/h2>\n\n\n\n<p>El desarrollo del Plotter ha requerido una verdadera amalgama de conocimientos, provenientes de diferentes disciplinas.<\/p>\n\n\n\n<p>En relaci\u00f3n al \u00e1mbito f\u00edsico-matem\u00e1tico, por ejemplo, se ha abordado la cinem\u00e1tica del sistema, comprendiendo las ecuaciones necesarias para la conversi\u00f3n de las coordenadas y la precisi\u00f3n de los movimientos, as\u00ed como el funcionamiento de los motores.<\/p>\n\n\n\n<p>Por otro lado, la comprensi\u00f3n profunda del formato G-Code ha sido esencial, ya que constituye el m\u00e9todo de comunicaci\u00f3n entre el plotter y el usuario. La interpretaci\u00f3n correcta de las instrucciones ha sido clave para lograr que los trazos fueran todo lo fieles posible a la realidad.<\/p>\n\n\n\n<p>Por esto, se consider\u00f3 cuidadosamente el proceso de transformar dise\u00f1os gr\u00e1ficos en instrucciones G-Code. La reflexi\u00f3n sobre c\u00f3mo llevar dibujos a G-Code a trav\u00e9s de archivos .svgs y el uso de software como Adobe Illustrator fue una parte integral del enfoque del proyecto. La utilizaci\u00f3n de .svgs permiti\u00f3 una transici\u00f3n fluida desde la creaci\u00f3n de dise\u00f1os gr\u00e1ficos hasta la generaci\u00f3n de instrucciones G-Code, optimizando as\u00ed el flujo de trabajo y facilitando la adaptaci\u00f3n de una amplia variedad de dise\u00f1os al sistema del plotter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dise\u00f1os Iniciales<\/h2>\n\n\n\n<p>Para hablar de los dise\u00f1os iniciales, es necesario dividir el proyecto en dos partes fundamentales: Cuerpo principal y g\u00f3ndola.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cuerpo principal<\/h3>\n\n\n\n<p>Se trata de toda la estructura que sujeta el dispositivo. Para realizarla se han utilizado los siguientes materiales:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dos piezas de madera para sujetar los motores Stepper, a las que se les incrusta un par de poleas GT2 de 5mm y 36 dientes. Est\u00e1n conectados a los motores mediante un tornillo prisionero que bloquea las poleas.<\/li>\n\n\n\n<li>Cuatro tornillos, tuercas y arandelas, utilizadas para sujetar las piezas sobre cualquier superficie.<\/li>\n\n\n\n<li>Correa GT2 que transmite el movimiento de los motores a la pieza central (g\u00f3ndola).<\/li>\n\n\n\n<li>Dos pesas atadas a cada uno de los extremos de la correa.<\/li>\n<\/ul>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"329\" height=\"246\" src=\"https:\/\/lh7-us.googleusercontent.com\/_hRwvBDcsFqN5cl5a3OovjTD_27k_hHMcI7TQZNsqwGI3C4nZpkgt_oYy-a-LgAg-pIOz72C0RsS61lfs7K5jg7k_5FBIcvN79TBH-SGlpuJyFdUrjjuRYsCVICWL8gFxUxNjxkgASYYQlAsPX2WfQw\"><\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/P4FxLKz-O9KXkod7z6S4bR1i29KGk-dZKWLpaiRdO9yFdgFKvwIyc2v16EtpdNsBiKSss2os_L3Ar0cKXES81Er1oc1dhWKqeeQcnGIEFK8FQPdoDnp4AM5y-ZI2msbPon7RBuefhcj1SjaTv8N1czY\" width=\"282\" height=\"295\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">G\u00f3ndola<\/h3>\n\n\n\n<p>La g\u00f3ndola, denominada as\u00ed por ser la parte del mecanismo que sujeta el bol\u00edgrafo o rotulador, fue dise\u00f1ada tomando como inspiraci\u00f3n las herramientas de dibujo, como los compases, que poseen una pieza externa que permite la adici\u00f3n de un lapicero a su estructura.<\/p>\n\n\n\n<p>&nbsp;Finalmente, se lleg\u00f3 a un dise\u00f1o formado por:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un cuadrado 10&#215;10 cm de madera con un orificio de 25mm ligeramente desplazado del centro, que constituye la estructura base de la pieza.<\/li>\n\n\n\n<li>Un tubo de pvc de 25mm de di\u00e1metro, situado sobre el orificio del componente anterior. Este tiene un tornillo en el lado m\u00e1s cercano al borde de la pieza de madera, que al enroscarlo, permite fijar el lapicero en el centro de la estructura.<\/li>\n\n\n\n<li>Dos tornillos colocados en las dos esquinas superiores, que aseguran la correa conectada a ambos motores, proporcionando la fuerza necesaria para los movimientos.<\/li>\n\n\n\n<li>Una pesa colocada en la parte m\u00e1s baja de la estructura para equilibrar la estructura y optimizar la precisi\u00f3n en el trazo.<\/li>\n<\/ul>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/bei17eF50_QOhfNsOMEU4XdQ2rcwxW-Je7qDwRvppvwCgLqgeiSJFA3Ez9_uuH9E7mKA7yVzXiKEHwq07-VYl3ukgAn7T3iFFX3Er18AWZQtvYqdLhtGlFZ3iDGSsv2amykvG7_oatgqSOWk5LNFz9g\" width=\"241\" height=\"319\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Im\u00e1genes del Proceso de Dise\u00f1o<\/h3>\n\n\n\n<p>Este dise\u00f1o ha sido fruto de un proceso iterativo y colaborativo, donde cada ajuste se realiz\u00f3 con el objetivo de mejorar la eficiencia y la estabilidad del plotter. Como prueba de esto, a continuaci\u00f3n se adjuntan im\u00e1genes de dicho proceso:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Cuerpo principal<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"979\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-cuerpo-1024x979.png\" alt=\"\" class=\"wp-image-7478\" style=\"width:435px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-cuerpo-1024x979.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-cuerpo-300x287.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-cuerpo-768x735.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-cuerpo-1536x1469.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-cuerpo.png 1951w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>G\u00f3ndola<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"770\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-carrito-1-1024x770.png\" alt=\"\" class=\"wp-image-7476\" style=\"width:503px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-carrito-1-1024x770.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-carrito-1-300x225.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-carrito-1-768x577.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-carrito-1.png 1208w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"714\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-carrito-2-1024x714.png\" alt=\"\" class=\"wp-image-7477\" style=\"width:501px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-carrito-2-1024x714.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-carrito-2-300x209.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-carrito-2-768x536.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/diseno-carrito-2.png 1131w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Materiales requeridos y precio total<\/h2>\n\n\n\n<p>Para llevar a cabo este proyecto, se han aprovechado varios componentes proporcionados en la caja Elegoo facilitada por la universidad:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un motor Stepper.<\/li>\n\n\n\n<li>Cableado.<\/li>\n\n\n\n<li>Un joystick.<\/li>\n\n\n\n<li>Placa y breadboard de Arduino.<\/li>\n<\/ul>\n\n\n\n<p>Sin embargo, a pesar de contar con estos elementos, fue necesario realizar algunas adquisiciones de manera personal para garantizar el \u00e9xito del proyecto. Estos componentes adicionales, indispensables para continuar con el desarrollo, incluyeron:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un motor Stepper adicional (1,50\u20ac)<\/li>\n\n\n\n<li>Una correa GT2 (8m) (10,24\u20ac)<\/li>\n\n\n\n<li>Dos poleas GT2 de 5mm y 36 dientes (3,70\u20ac)<\/li>\n\n\n\n<li>Una tabla de contrachapado (4,50\u20ac)<\/li>\n\n\n\n<li>Un tubo de PVC (1,00\u20ac)<\/li>\n\n\n\n<li>Un bote de pegamento extra fuerte (6,55\u20ac)<\/li>\n\n\n\n<li>Tornillos, tuercas, pizarra y pesas (Propiedad de los alumnos)<\/li>\n<\/ul>\n\n\n\n<p>El costo total de estos materiales adicionales ascendi\u00f3 a 27,49\u20ac, aunque es importante se\u00f1alar que al considerar los gastos de env\u00edo de algunos de estos elementos, el costo total del proyecto fue de 32,99\u20ac. Esta inversi\u00f3n result\u00f3 crucial para asegurar la disponibilidad de los recursos necesarios y mantener la viabilidad y calidad del proyecto en su conjunto.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">2. Desarrollo del proyecto<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Funcionamiento de los Steppers<\/h2>\n\n\n\n<p>En primer lugar, comenzamos el proyecto averiguando c\u00f3mo funcionan los motores. Estos est\u00e1n conectados al driver ULN2003 que se conecta a 4 pines digitales en la placa de Arduino.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"671\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/stepper-1024x671.jpg\" alt=\"\" class=\"wp-image-7485\" style=\"width:542px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/stepper-1024x671.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/stepper-300x197.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/stepper-768x504.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/stepper.jpg 1359w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>En el c\u00f3digo, se asignan los pines a cada una de las entradas y la rotaci\u00f3n se establece mediante la funci\u00f3n step, que indica el n\u00famero de pasos que tiene que dar el motor.<\/p>\n\n\n\n<p>Fue necesario utilizar una librer\u00eda en la que se implementara su funcionamiento, inicialmente empezamos a implementar unas funciones propias para el control de los motores (funciones step personalizadas, controlando la secuencia de la actuaci\u00f3n de los polos del motor de forma directa), ya que con la librer\u00eda que proporciona Arduino nos fue imposible hacer que rotasen simult\u00e1neamente debido al interbloqueo de su funci\u00f3n step(). Finalmente, recurrimos a una librer\u00eda llamada \u00abCheapStepper\u00bb, puesto que la encontramos mientras est\u00e1bamos implementando nuestra propia librer\u00eda y decidimos usarla para ahorrar tiempo (porque era un problema resuelto). Esta librer\u00eda permiti\u00f3 resolver los problemas de sincronizaci\u00f3n de los motores[link] por medio de las funciones de movimientos no-bloqueantes (step() y run()). Sin embargo, a pesar de haber utilizado una librer\u00eda externa, fue necesario modificarla para el proyecto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Clases implementadas y modelo matem\u00e1tico<\/h2>\n\n\n\n<p>Para facilitar la representaci\u00f3n de los datos y el modelo matem\u00e1tico del sistema hemos creado algunas clases y structs:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una clase Vec2 para el facilitar el uso y las operaciones de vectores y coordenadas.<\/li>\n\n\n\n<li>Un struct Belt que permite almacenar las longitudes de las correas que corresponde a cada motor.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Estos datos se utilizan en una serie de funciones:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>canvasCoordinatesToBeltLengths<\/strong>. Calcula la longitud que se corresponde a la posicion sobre el lienzo proporcionada. Hace esto calculando las distancias a los ejes de los motores desde el punto del lienzo (para poder hacer este c\u00e1lculo correctamente primero traduce las coordenadas del lienzo a coordenadas de \u201cmundo\u201d que son el sistema de referencia de los motores).<\/li>\n<\/ul>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"324\" src=\"https:\/\/lh7-us.googleusercontent.com\/aP0gjrKjL1U-kZz9L-i4gv3B2R7ABsQ2VBcJsLDfStqdQLAxfnwlc0DSjhsDT48lxQqp4azs-x0qVQ6p97DPiz3loSjTlv_MiyyYO8UI8ElrCa5ypiSlyFYQZSZY6m2O1arS59FrlOB_U6wyS4mo1q0\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>beltLengthsToCanvasCoordinates<\/strong>. <\/li>\n<\/ul>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"311\" src=\"https:\/\/lh7-us.googleusercontent.com\/WeMee_Bgn8FXoHy8d9LWYHjQA9yYN51_BHhusxmrMY6_sx3MsLXxvm1ojkOJuLHj0NfHAfhpIAaK019iBSJp_WWujMkYQ1Xqk3xYBHpWe0wIT4s84OYDc334dCqPfWubTXygxlUx3Og0GyQM9M4WNhQ\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>worldToCanvasCoordinates<\/strong>. Convierte las coordenadas globales (el sistema de referencia de los motores), a coordenadas del lienzo. En el caso de las coordenadas globales, el punto (0,0) est\u00e1 situado en la esquina superior izquierda (sobre el motor 0) el eje coordenado x (horizontal) avanza hacia la derecha, mientras el eje y (vertical) crece hacia abajo en el caso de las coordenadas del lienzo, el punto (0,0) est\u00e1 colocado en el origen que se le ha indicado.<\/li>\n<\/ul>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"272\" src=\"https:\/\/lh7-us.googleusercontent.com\/TbxYgBBPLs2WdYh0zVLB3DerB_FfrBCUA5qlafVpAV3CWPmAGRtTkUe-1uMMpGX9jcGJi2doL9juVGn4bAuP57gUOU9KjB9o12Xo1smAniC_Ux9XCbPAavYbUzK6bOf1uQ9CG9myEOuErKun5AS80Us\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>canvasToWorldCoordinates<\/strong>. Convierte las coordenadas del lienzo a coordenadas globales.<\/li>\n<\/ul>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"272\" src=\"https:\/\/lh7-us.googleusercontent.com\/AdcjArmPjXEJAZ_OYur0k7pIffZoqsHK15AkFZfnOv5_5kDjo2ORtMojTV90JSdXcuYGdn4jk0hl2yLGSbp6UV7jTJpX2SZj3c65CwnzYXTEXTc4NThVA6CV5GZ_30Jq5myhkfLoxiV7drVdiSmaTHg\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>moveToPoint<\/strong>. Mueve la g\u00f3ndola a la coordenada indicada, traduciendo la longitud de las correas a n\u00famero de pasos que mueve el motor.<\/li>\n<\/ul>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"251\" src=\"https:\/\/lh7-us.googleusercontent.com\/5G3o6xdAMUIQFJ4Je2pCn40fcagnKwZVY7wQMZxkYEs0HBm4JU78bHrxUox22ESAjGPwp0VkZUIZLk9JrrpFAp4lsFued6EUcgokvge4imHVlStqdeZ8AEVzw5hiDTr-0r7dC8-lhWgQx5f656DR8o4\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>moveBelts<\/strong>. Establece una longitud concreta de las correas.<\/li>\n<\/ul>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"309\" src=\"https:\/\/lh7-us.googleusercontent.com\/xeuj8mwQlz1IyorjUVdNy3U2Iy9f81tC81Lou7hw1fB4MnMh7xW9pVL684iDP6i_tMocX_p4j3Iogw5C-s-17iXZ5TEUvIlHouc7a2DcPk1uL_6Ns99VDng2YVQ4bO9w30fGcAJEbjzj3IpM4b-9mK0\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Joystick y funciones para probar el funcionamiento<\/h2>\n\n\n\n<p>Para poder probar el funcionamiento de las clases implementadas, se utiliz\u00f3 un joystick que controla la direcci\u00f3n en la que se mueve la g\u00f3ndola. Este joystick va conectado a un pin digital para usar el clic del bot\u00f3n y a dos pines anal\u00f3gicos que reciben la entrada de los ejes en los que se mueve.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"452\" height=\"254\" src=\"https:\/\/lh7-us.googleusercontent.com\/nrCkQzKoJiK4YkbMPGgiEhkaDf-SnIUHLfXsZn6RM012wKOGwrHAkPCAY_MrvH1eGXLopmznCuFgCfKowKgxzpi0Zx2GyoYMf2vGm7xGQZyfY0QJh4I1LH81bHNazSQopmoBnGr2yA0Lya4V-m6lG2g\"><\/p>\n\n\n\n<p>Se utiliza la siguiente funci\u00f3n para procesar el joystick:<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"307\" src=\"https:\/\/lh7-us.googleusercontent.com\/bLtdKSOOtu1ZrF_Jz1JdYb7mv1PGQfWZ0KDoV0OUywnAf-F48SNraoB7Fd8YJZinAz98q7IPfuzs6GK2wZ2Wu1FjQBBWy_wogcfYoTicKQSeB0Q-ukDOkKK6kREmfhIJdGsKSP11QivKGhDdJviqBao\"><\/p>\n\n\n\n<p>Adem\u00e1s del joystick, antes de pasarle a Arduino c\u00f3digo de G-Code, se prob\u00f3 tambi\u00e9n el funcionamiento del dispositivo mediante una funci\u00f3n matem\u00e1tica que dibuja una circunferencia:<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"243\" src=\"https:\/\/lh7-us.googleusercontent.com\/9UgOeQnI24NzRedIpuif71PmMW_fGAwbeYitqLiIw6cFdRDaV5i2NY3TXSc1sD64ObkGT1VvbtrB-j6s0H3nWrMoW0DbcJzxPDOpROMahtSih_Tu8Wq3GsQhXXsazSy-Xcv16hz07wqTTJxuLvpRqok\"><\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"357\" height=\"371\" src=\"https:\/\/lh7-us.googleusercontent.com\/AQi_j-CopiIogpbmPMKBpVaW7DYutaPPooW6VGmL8VxoggDHhYAms8AKOfQcpDaV2KTuIlpP-alw0AsiTHkTZCKAoxC8C4ys6ooI6GiBzxl0UslOYRK6ptq_AB8HCfaUtXsl0R9_rLTrb6YNLsbNDKw\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">G-Code a Arduino<\/h2>\n\n\n\n<p>Antes de poder pasarle una imagen a Arduino, primero, hay que obtener un archivo .gcode del camino que se quiera recorrer, y por tanto dibujar. Para obtener este .gcode, hemos optado por generarlo a partir de archivos vectoriales .svg proces\u00e1ndolos con <a href=\"https:\/\/sameer.github.io\/svg2gcode\/#settings\">svg2gcode<\/a>. Estos archivos vectoriales los hemos obtenido a partir de im\u00e1genes (.png o .jpeg) por medio de la herramienta de vectorizaci\u00f3n de Image Trace de Adobe Illustrator. Adem\u00e1s para previsualizar el recorrido G-Code final hemos utilizado <a href=\"http:\/\/jherrm.com\/gcode-viewer\/\">gcode-viewer<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"555\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-96-1024x555.png\" alt=\"\" class=\"wp-image-7854\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-96-1024x555.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-96-300x163.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-96-768x416.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-96-1536x832.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-96.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/rnSbWaxjw5wMuahfXfyz6pWYRH3K4CH2gMKQz9ENy7JJuGhkfDQFmVD01FSUCWg5XRoXBHXCAvsKi0fIN1wT3mLuk6Fg3mHZsDhmxNF3Ye__sPlULC8tcy5Is4x7rwXUrjCcuH6b1-EVX45jZBntqLM\" style=\"width: 1000px\"><\/p>\n\n\n\n<p>Esta p\u00e1gina convierte gr\u00e1ficos vectoriales a G-Code, creando un archivo con las coordenadas de cada uno de los puntos de las figuras de la imagen, incluyendo la interpolaci\u00f3n (discretizaci\u00f3n) de los puntos de las curvas propias del formato vectorial, a una resoluci\u00f3n configurable (mediante prueba y error concluimos que la resoluci\u00f3n \u00f3ptima era de 0,1mm).<\/p>\n\n\n\n<p>Una vez creado el archivo G-Code, lo interpretamos y comunicamos al Arduino a trav\u00e9s de un script de Python que hemos programado.<\/p>\n\n\n\n<p>Las funciones del script son las siguientes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>parse_gcode<\/strong>.<strong> <\/strong>Primero extrae la informaci\u00f3n de las coordenadas contenidas en el archivo .gcode.<\/li>\n<\/ul>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/KXMqBWvQm02ik7vrossu6RYIiKFRvxuTUQ7HEeNNEDjWw_9w54FfNA5ZfIli7wKMKUlND5oH6-u7atbZ_tWYs9nuDg5-kqGaV5lQd70cK0uXkN67dQGicZZGFbyX8pwJzaaSXO9CVVlwaJgg_1iLnN4\" style=\"width: 1000px\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>normalize_and_map. <\/strong>Despu\u00e9s se traducen estas coordenadas al sistema de referencia del lienzo del plotter, que el arduino es capaz de interpretar correctamente.<\/li>\n<\/ul>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/VpFzUcvuYuxtoJs2sgtF5m8s3kRaq7EoUBUk0pdDKcT41r9lR1SAgWsZ60xz4l8Sm1dZyzA6gnvjMeAk1AMUkeCjBV0YUJxHVpl4NwSOl2tWWGnHX5iayet6_p64HjEguREIcktR0RzBuomR1hmM6To\" style=\"width: 1000px\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span id=\"docs-internal-guid-d5c03c22-7fff-157b-b7f9-900e5409820c\"><span style=\"font-size: 11pt;font-family: Arial, sans-serif;background-color: transparent;vertical-align: baseline\"><strong>send_to_arduino<\/strong><\/span><\/span>. Finalmente estas coordenadas se transmiten al Arduino de forma progresiva, seg\u00fan el protocolo de comunicaci\u00f3n que hemos desarrollado. Vamos a concretar el funcionamiento de este protocolo y el proceso de interpretaci\u00f3n de las coordenadas del Arduino: El plotter realiza movimientos exclusivamente en l\u00ednea recta, entre cada coordenada que recibe a su variable \u2018targetPosition\u2019 (bien sea interpretada de gcode o introducido por el terminal a trav\u00e9s del puerto serial, o por la manipulaci\u00f3n del Joystick) y su posici\u00f3n actual \u2018carriagePosition\u2019.<\/li>\n<\/ul>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/NxD4fx231X5bRj5cWI4hluhBW0kDZaaB-lS3a4-b47NoLLKoZd4QyaZ9FS_drRBK2FP8ecfCL_kIgML9Ytw56JBOc5paLpKdx0L4TJiekGXGqFBPmoPt29x1QHOIzpI452PdVrQIghLTB8hki0g97KU\" style=\"width: 1000px\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>main<\/strong>. En el main se busca el archivo .gcode, se ajusta el tama\u00f1o del lienzo y se establece el puerto serie.<\/li>\n<\/ul>\n\n\n\n<p><img decoding=\"async\" style=\"width: 1000px\" src=\"https:\/\/lh7-us.googleusercontent.com\/meTdnyvpdx8EimLRMvJJs4yiKvb2OBSpIvgroUXyDCjOEH1nJW-5xQkBDZBIY3rPhiKsdaoFlpTqjptUpeyWHR0-mMz63we7AJuF3s_Abe8F_xlwIRHpbuCYu-yUn9aeLdcGWHIUdpBi3XGKtSbAYXg\"><\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/X5SepF5jOYgtZWQBiMyR1sladGAxYcJCmaT7Oh1lPWxQRFG45vemYtDC4o5suC1OVPnwjPNz9_FKk2x_bGJab8oaUOHhwHaMkjT6uhUMfXywTOTcdcnwZ0n_FqjWyiiuTtdkNDOiQMjXpvQy6bWcWyU\" style=\"width: 1000px\"><\/p>\n\n\n\n<p><strong>Ejemplo de protocolo de comunicaci\u00f3n con Arduino en ejecuci\u00f3n. <\/strong>R(coordenadas) \u2190 la salida Serial del Arduino que recibe el script. Indica las coordenadas actuales de la g\u00f3ndola del plotter. La R se\u00f1aliza &#8216;Ready&#8217; de la solicitud de coordenadas al script. Las coordenadas que se muestran bajo el mensaje del plotter es el mensaje que env\u00eda el script por medio de la interfaz Serial, que son las coordenadas en el formato que comprende el plotter. Debajo se imprime el estado de ejecuci\u00f3n que refleja el porcentaje de compleci\u00f3n del camino G-Code, el tiempo transcurrido (en segundos) y una estimaci\u00f3n calculada din\u00e1micamente del tiempo de dibujado restante.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Problemas encontrados<\/h1>\n\n\n\n<p>Durante el desarrollo del proyecto, encontramos varios problemas que tuvimos que solucionar o solventar de ciertas maneras. A continuaci\u00f3n, explicamos cuales fueron y c\u00f3mo fueron solucionados.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tensi\u00f3n de las correas<\/strong>. Hemos tenido varios problemas a nivel f\u00edsico. Uno de los mayores limitantes del proyecto es el problema ocasionado por el tensionado de las correas a medida que la g\u00f3ndola se aleja del centro. Cuando esta sube a una determinada altura, hay demasiada tensi\u00f3n en una de las correas, por lo que los motores deben girar mucho para moverse un poco, mientras que, cuando se mueve a una de las esquinas inferiores, la tensi\u00f3n en una de las correas es muy poca por lo que, con que el motor gire un poco, la g\u00f3ndola va a moverse mucho. A continuaci\u00f3n, mostramos una imagen explicativa de este fen\u00f3meno:<\/li>\n<\/ul>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"417\" height=\"313\" src=\"https:\/\/lh7-us.googleusercontent.com\/ErkoG2vTvUHo9wmnEnufvIcagweb41FgxeytRAqx-yJGFBmV7Bv5GZy8wp1WtK1neKU54yJAuZDg2oyIjoIF5jY0yLVLqnlI5XwuX6GR6kGcxwyebH2eYEO-TfsynEVqJZY8wQYO46qet_bLxSQIx2U\"><\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"490\" height=\"93\" src=\"https:\/\/lh7-us.googleusercontent.com\/4wljCOrEeakF1honC_auEMMLNZBaKPwTfHKjdU3yxypenzn8jw2c2E07NA7JOmFVYMN-pRhTksl1WEkJdYwrIgBIqC6dm8UiNkZnBE7b73QTdR0EjV8lES1dK6E474lpKdZW_0EOTv5Auw57PNVfETo\"><\/p>\n\n\n\n<p>Al final, debido a la complejidad que esto supondr\u00eda y al resto de limitaciones que acompa\u00f1an el proyecto, se decidi\u00f3 que lo m\u00e1s conveniente era establecer un lienzo en el que pintar, aproximado a la zona verde indicada en la imagen anterior.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Sincronizaci\u00f3n de los motores<\/strong>. Como ya se ha mencionado con anterioridad, los Steppers y la librer\u00eda proporcionada por Arduino, no solventan los problemas de sincronizaci\u00f3n proporcionados al utilizar dos motores. Es por eso que se mov\u00edan haciendo, primero un movimiento uno de los motores, y una vez acabado, se hac\u00eda el otro movimiento. Es gracias a una librer\u00eda que encontramos en internet que proporciona funciones de movimiento no-bloqueantes, que pudimos abarcar este problema. A continuaci\u00f3n, dejamos el enlace al repositorio de GitHub de esta librer\u00eda: <a href=\"https:\/\/github.com\/tyhenry\/CheapStepper\">Repositorio de Github: CheapStepper<\/a><\/li>\n<\/ul>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"362\" height=\"263\" src=\"https:\/\/lh7-us.googleusercontent.com\/BTNIJFUqSt4ThMFf248PI4GtoyCAzxlDEm4qZaWlB-2N8mOCdyXqtmqvS6wREv6oMSZ0V1pnK13jhdLe92Job8LK2FsMazmC8Pv0Amjl7Um7KmxmEpYfprCdf6RdD5oLAfQq1HtmUzOVMxPFpGZtVuY\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Traducci\u00f3n de longitud a pasos del motor<\/strong>. Otro de los problemas encontrados fue el paso de las revoluciones del motor a la longitud que recorre la correa. La ecuaci\u00f3n que permite conocer este dato es la de la longitud de una circunferencia: 2*\u03c0 * r . Sin embargo, esto no fue todo, ya que fue necesario pasar la longitud que recorr\u00eda la g\u00f3ndola a <em>steps<\/em> del motor, lo que no fue f\u00e1cil ya que lo m\u00ednimo que permite recorrer un motor es \u00bd paso. Si el paso es menor que esto, lo aproxima a 0 y no permite moverse. La manera en la que esto fue resuelto fue almacenando la cantidad de longitud que tiene que moverse cada vez que da un paso, por lo que, si es menor a medio paso, la siguiente vez que compruebe cu\u00e1nto tiene que moverse, se mover\u00e1 la longitud acumulada. Esto hace que siempre quede un peque\u00f1o error en las longitudes, por lo que se almacena tambi\u00e9n este valor en una variable.<\/li>\n\n\n\n<li><strong>Debug con Serial<\/strong>. Otro de los problemas que tuvimos al principio fue que para comprobar muchos valores simult\u00e1neos, imprimimos en Serial bastantes valores, para conocer las longitudes de la correa, el error, los pasos que se mov\u00eda el motor, etc. Es por culpa de lo ineficiente de esta funci\u00f3n que se ralentizaba el dispositivo e iba tan lento que no parec\u00eda funcionar correctamente. Finalmente concluimos con que era mejor debuguear cuando fuese necesario, y solamente con lo que quer\u00edamos comprobar en ese momento.<\/li>\n\n\n\n<li><strong>L\u00edneas rectas<\/strong>. Uno de los problemas que encontramos al enviar las coordenadas de un punto era que, cuando ten\u00eda que moverse en l\u00ednea recta, la g\u00f3ndola se mov\u00eda haciendo una especie de zigzag, primero movi\u00e9ndose como una diagonal, y al final movi\u00e9ndose a la coordenada indicada. Para solventar este problema, se recurri\u00f3 a subdividir los trazos en funci\u00f3n de una constante, para que corrigiese la direcci\u00f3n del movimiento a medida que se fuese moviendo en la recta.<\/li>\n<\/ul>\n\n\n\n<p>Soluci\u00f3n:Para solventar esto se implementaron dos funciones, una \u2018created Waypoints\u2019 que establece las variables que se utilizan para la interpolaci\u00f3n del recorrido (siempre que la longitud de este supere la resoluci\u00f3n de subdivisi\u00f3n establecida en mm), y otra funci\u00f3n \u2018moveTo Waypoints\u2019 que va moviendo la variable \u2018targetPosition\u2019incrementalmente seg\u00fan un vector en la direcci\u00f3n del trazo, con una magnitud dada por la resoluci\u00f3n de subdivisi\u00f3n.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"739\" height=\"573\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-55.png\" alt=\"\" class=\"wp-image-7718\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-55.png 739w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-55-300x233.png 300w\" sizes=\"auto, (max-width: 739px) 100vw, 739px\" \/><\/figure>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"403\" src=\"https:\/\/lh7-us.googleusercontent.com\/sIO2jiCQm2EGqF-S8reLik_zxvPNWCzFxAbRrzakd2rtU5uWgnnFnLsTLzwxVy-n3Xedn19bOpk8gJ1seE_nYmerdmGfLMf3hKpFiewXjqsBF77ImHmzVq_CVq8KeopHxSPhYZT4igihxXCwHVmF7OQ\"><\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/E8Vbkv4gO2RZNE-FlWnOsu42AZGambe_bv_NTQe6VMpR4D7MkpejDmHKRSdeRmbsr8zar8JpDnFBFSca9X6rpH1B2_QyzE2KYoa3hrRx8acwlEBzNljptUQVGS245bPAACMsrKVIWDtn_JnTicRVzqw\" width=\"602\" height=\"393\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Verticales<\/strong>. Debido a un problema en una de las funciones programadas, cuando la g\u00f3ndola se mov\u00eda en direcciones verticales, funcionaba incorrectamente. Esto se solucion\u00f3 ya que nos dimos cuenta de que la funci\u00f3n que permit\u00eda controlar el flujo del programa, <em>runStepper<\/em> (controla el no mandar un movimiento nuevo antes de acabar el anterior), que va sumando el n\u00famero de pasos que tiene que hacer, sumaba incorrectamente, ya que no hac\u00eda el valor absoluto. Al moverse la g\u00f3ndola en vertical, los motores se mov\u00edan en direcciones contrarias, y el valor que almacena los pasos que tiene que dar el motor val\u00eda 0 antes de tiempo, por lo que asum\u00eda una posici\u00f3n incorrecta.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"597\" height=\"586\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-56.png\" alt=\"\" class=\"wp-image-7719\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-56.png 597w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-56-300x294.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-56-80x80.png 80w\" sizes=\"auto, (max-width: 597px) 100vw, 597px\" \/><\/figure>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"484\" height=\"288\" src=\"https:\/\/lh7-us.googleusercontent.com\/bm0x2RbqGEI8DykrGvqL5KwGpvO1q970NaEyg0uYRtZ_l3QecFZm7TyJNCFOGo-OQh1bRaN95h9VcHU4o65KkcZPCFXtULf3QepmLqUiTBuyqMn1btAXCis2WOpnu7Ks0fLQRaD2a6HZ3BuV1PuS0m0\"><\/p>\n\n\n\n<p>Esta es la funci\u00f3n en la que ocurr\u00eda el error.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Orden de recorrido<\/strong>. Al procesar una imagen en Illustrator para obtener el archivo .svg y as\u00ed convertirlo a G-Code y envi\u00e1rselo a Arduino, el recorrido de las coordenadas que se realizaba no era el m\u00e1s \u00f3ptimo, por lo que, al no haber implementado funcionalidad que permitiese levantar el bol\u00edgrafo de la g\u00f3ndola, el dibujo quedaba cubierto por un mont\u00f3n de l\u00edneas de tr\u00e1nsito. Es por ello que se program\u00f3 un c\u00f3digo que ordenaba en Illustrator los puntos en funci\u00f3n al camino m\u00e1s corto, haciendo que el resultado final fuese mucho m\u00e1s legible.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><img decoding=\"async\" style=\"width: 500px\" src=\"https:\/\/lh7-us.googleusercontent.com\/99Lpfce8xYypsEoQpQvlkns_IYM-JvSQTMBYIoPEkH0v3tH2lDC-ISksqs-ldwY6IfnvqN2TZ8caQgl27FySoXQh6uRNdQS8NmFlWde-8RpUK0DtyAndTu-t2GuOoqovCuRGte1jeV-xLaLd2di-Bcs\"><\/td><td><img decoding=\"async\" style=\"width: 500px\" src=\"https:\/\/lh7-us.googleusercontent.com\/ehMbl71dbdhlsnAgwW3jqh_EZeO--2GUX4TXMVfBLHVRjiRuGG8exSnXXL3QUjXRG507r1qq8tOy9t6gaz4Gnmt-ev3hqHHfxOUPiYOdWc6k3QY3HoZnaDRatNhL3liSMfj39HpJvfS0y_HDWVwIxsE\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Una vez solucionado el problema, el resultado es el siguiente:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/ltokXCNvSEdeE3Jg32B1GTgRs9r-CSW0jbfa6DveItTvC-hZTc2washlhuyTy0oudzjnsOVxI4nh7CBZF0Wtd4-QsWtnnxVEQq-miLmT8xByo69laiyBGTEQWezGW-fszFzNA0sMRRF_ipem7eUuGU4\" style=\"width: 500px\"><\/td><td><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/NNTp45bobTA9E-s_-wGeaDDMlU8IdlclcN7gu4bcSNjDbqm3QQZWH-nFzOKDjWIpBa9b9JKWFPmFMdJL8fCTjNGk6ArrYW9ggIcFbXNxmHuGkt44ps55AZzPbPXa-MagcCrxgsiZOKsRBsUM_WFcOXg\" style=\"width: 500px\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00eddeo demostrativo<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"Vertical Plotter. Dise\u00f1o de Sistemas Empotrados.\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/0Y4fz3Pcz3U?feature=oembed&#038;wmode=opaque\" 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<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ap\u00e9ndice<\/h2>\n\n\n\n<p>C\u00f3digo de Arduino<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"466\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_CheapStepper_header_changes-1024x466.png\" alt=\"\" class=\"wp-image-7828\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_CheapStepper_header_changes-1024x466.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_CheapStepper_header_changes-300x136.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_CheapStepper_header_changes-768x349.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_CheapStepper_header_changes-1536x698.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_CheapStepper_header_changes.png 1896w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"972\" height=\"634\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_CheapStepper_implementation_changes.png\" alt=\"\" class=\"wp-image-7829\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_CheapStepper_implementation_changes.png 972w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_CheapStepper_implementation_changes-300x196.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_CheapStepper_implementation_changes-768x501.png 768w\" sizes=\"auto, (max-width: 972px) 100vw, 972px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"789\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_Constants_canvasToBelthLength-1024x789.png\" alt=\"\" class=\"wp-image-7832\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_Constants_canvasToBelthLength-1024x789.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_Constants_canvasToBelthLength-300x231.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_Constants_canvasToBelthLength-768x591.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_Constants_canvasToBelthLength.png 1218w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"909\" height=\"1024\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_header-909x1024.png\" alt=\"\" class=\"wp-image-7830\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_header-909x1024.png 909w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_header-266x300.png 266w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_header-768x865.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_header-1363x1536.png 1363w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_header.png 1372w\" sizes=\"auto, (max-width: 909px) 100vw, 909px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"617\" height=\"1024\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_implementation-617x1024.png\" alt=\"\" class=\"wp-image-7831\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_implementation-617x1024.png 617w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_implementation-181x300.png 181w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_implementation-768x1274.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_implementation-926x1536.png 926w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_implementation-1234x2048.png 1234w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_canvasToBelthLength_implementation.png 1802w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"894\" height=\"1024\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_Variables_main-894x1024.png\" alt=\"\" class=\"wp-image-7810\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_Variables_main-894x1024.png 894w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_Variables_main-262x300.png 262w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_Variables_main-768x880.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_Variables_main-1341x1536.png 1341w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_Variables_main-1787x2048.png 1787w\" sizes=\"auto, (max-width: 894px) 100vw, 894px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"630\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_setup-1024x630.png\" alt=\"\" class=\"wp-image-7812\" style=\"width:1066px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_setup-1024x630.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_setup-300x185.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_setup-768x472.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_setup-1536x945.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_setup.png 1772w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"986\" height=\"1014\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_loop.png\" alt=\"\" class=\"wp-image-7814\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_loop.png 986w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_loop-292x300.png 292w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_loop-768x790.png 768w\" sizes=\"auto, (max-width: 986px) 100vw, 986px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"525\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_initialSequence-1024x525.png\" alt=\"\" class=\"wp-image-7817\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_initialSequence-1024x525.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_initialSequence-300x154.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_initialSequence-768x394.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_initialSequence.png 1310w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"601\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_runSteppers-1024x601.png\" alt=\"\" class=\"wp-image-7823\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_runSteppers-1024x601.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_runSteppers-300x176.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_runSteppers-768x451.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_runSteppers.png 1080w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"447\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_processJoystickInput-1024x447.png\" alt=\"\" class=\"wp-image-7818\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_processJoystickInput-1024x447.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_processJoystickInput-300x131.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_processJoystickInput-768x335.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_processJoystickInput-1536x670.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_processJoystickInput-2048x893.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveBelts-1024x614.png\" alt=\"\" class=\"wp-image-7820\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveBelts-1024x614.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveBelts-300x180.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveBelts-768x461.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveBelts.png 1310w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"704\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveToPoint-1024x704.png\" alt=\"\" class=\"wp-image-7821\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveToPoint-1024x704.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveToPoint-300x206.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveToPoint-768x528.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveToPoint.png 1310w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"685\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_createWaypoints-1024x685.png\" alt=\"\" class=\"wp-image-7824\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_createWaypoints-1024x685.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_createWaypoints-300x201.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_createWaypoints-768x514.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_createWaypoints.png 1402w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"670\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveToWaypoint-1024x670.png\" alt=\"\" class=\"wp-image-7825\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveToWaypoint-1024x670.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveToWaypoint-300x196.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveToWaypoint-768x502.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_moveToWaypoint.png 1202w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"414\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_drawCircle-1024x414.png\" alt=\"\" class=\"wp-image-7826\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_drawCircle-1024x414.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_drawCircle-300x121.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_drawCircle-768x311.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_drawCircle-1536x621.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_drawCircle.png 1756w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"933\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_printSerialData-1024x933.png\" alt=\"\" class=\"wp-image-7834\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_printSerialData-1024x933.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_printSerialData-300x273.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_printSerialData-768x700.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_printSerialData.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"592\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_receivePositionBySerial-1024x592.png\" alt=\"\" class=\"wp-image-7835\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_receivePositionBySerial-1024x592.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_receivePositionBySerial-300x173.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_receivePositionBySerial-768x444.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_receivePositionBySerial.png 1294w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"781\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_receiveSerialData-1024x781.png\" alt=\"\" class=\"wp-image-7836\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_receiveSerialData-1024x781.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_receiveSerialData-300x229.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_receiveSerialData-768x586.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_receiveSerialData.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"595\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_runStepperrequestSerialPosition-1024x595.png\" alt=\"\" class=\"wp-image-7837\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_runStepperrequestSerialPosition-1024x595.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_runStepperrequestSerialPosition-300x174.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_runStepperrequestSerialPosition-768x446.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_runStepperrequestSerialPosition.png 1156w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"972\" height=\"786\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_parseReceivedData.png\" alt=\"\" class=\"wp-image-7838\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_parseReceivedData.png 972w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_parseReceivedData-300x243.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/INO_parseReceivedData-768x621.png 768w\" sizes=\"auto, (max-width: 972px) 100vw, 972px\" \/><\/figure>\n\n\n\n<p>C\u00f3digo de Python:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"397\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_parse_gcode-1024x397.png\" alt=\"\" class=\"wp-image-7840\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_parse_gcode-1024x397.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_parse_gcode-300x116.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_parse_gcode-768x298.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_parse_gcode-1536x596.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_parse_gcode.png 1634w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"534\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_normalize_and_map-1024x534.png\" alt=\"\" class=\"wp-image-7841\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_normalize_and_map-1024x534.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_normalize_and_map-300x156.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_normalize_and_map-768x400.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_normalize_and_map-1536x801.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_normalize_and_map-2048x1068.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"739\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_send_to_arduino-1024x739.png\" alt=\"\" class=\"wp-image-7842\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_send_to_arduino-1024x739.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_send_to_arduino-300x217.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_send_to_arduino-768x554.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_send_to_arduino-1536x1109.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_send_to_arduino-2048x1478.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"467\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_main-1024x467.png\" alt=\"\" class=\"wp-image-7843\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_main-1024x467.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_main-300x137.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_main-768x350.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_main-1536x701.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/PY_main.png 1556w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>TSP Sort para Illustrator:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"1024\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/Illustrator_twoOptTSPsort-320x1024.png\" alt=\"\" class=\"wp-image-7844\" style=\"width:515px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/Illustrator_twoOptTSPsort-320x1024.png 320w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/Illustrator_twoOptTSPsort-94x300.png 94w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/Illustrator_twoOptTSPsort-768x2460.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/Illustrator_twoOptTSPsort.png 1740w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>1. Introducci\u00f3n Objetivos Despu\u00e9s de realizar una exhaustiva b\u00fasqueda creativa en el blog de la asignatura y en internet en general, el equipo lleg\u00f3 a un consenso sobre el objetivo principal del proyecto: Concebir,&#46;&#46;&#46;<\/p>\n","protected":false},"author":182,"featured_media":7718,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-7426","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>Vertical Plotter - Proyectos con Arduino.<\/title>\n<meta name=\"description\" content=\"Proyectos con Arduino. Vertical Plotter\" \/>\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\/vertical-plotter\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vertical Plotter - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Proyectos con Arduino. Vertical Plotter\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-20T22:54:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-25T12:23:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-55.png\" \/>\n\t<meta property=\"og:image:width\" content=\"739\" \/>\n\t<meta property=\"og:image:height\" content=\"573\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"DSE_2023_24_G01\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"DSE_2023_24_G01\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 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\\\/vertical-plotter\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/\"},\"author\":{\"name\":\"DSE_2023_24_G01\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/2ad47a0b7dc8fc85a423a80bfc1feb5a\"},\"headline\":\"Vertical Plotter\",\"datePublished\":\"2023-12-20T22:54:26+00:00\",\"dateModified\":\"2024-01-25T12:23:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/\"},\"wordCount\":2838,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/12\\\/image-55.png\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/\",\"name\":\"Vertical Plotter - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/12\\\/image-55.png\",\"datePublished\":\"2023-12-20T22:54:26+00:00\",\"dateModified\":\"2024-01-25T12:23:30+00:00\",\"description\":\"Proyectos con Arduino. Vertical Plotter\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/12\\\/image-55.png\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/12\\\/image-55.png\",\"width\":739,\"height\":573,\"caption\":\"Imagen del proyecto\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/vertical-plotter\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vertical Plotter\"}]},{\"@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\\\/2ad47a0b7dc8fc85a423a80bfc1feb5a\",\"name\":\"DSE_2023_24_G01\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/49bac5b8a1ec29c9fc743769b8f7a06cac8cda5e96fc99af9638eb06f6703e77?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/49bac5b8a1ec29c9fc743769b8f7a06cac8cda5e96fc99af9638eb06f6703e77?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/49bac5b8a1ec29c9fc743769b8f7a06cac8cda5e96fc99af9638eb06f6703e77?s=96&d=mm&r=g\",\"caption\":\"DSE_2023_24_G01\"},\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/dse202324g01\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Vertical Plotter - Proyectos con Arduino.","description":"Proyectos con Arduino. Vertical Plotter","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\/vertical-plotter\/","og_locale":"es_ES","og_type":"article","og_title":"Vertical Plotter - Proyectos con Arduino.","og_description":"Proyectos con Arduino. Vertical Plotter","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2023-12-20T22:54:26+00:00","article_modified_time":"2024-01-25T12:23:30+00:00","og_image":[{"width":739,"height":573,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-55.png","type":"image\/png"}],"author":"DSE_2023_24_G01","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"DSE_2023_24_G01","Tiempo de lectura":"14 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/"},"author":{"name":"DSE_2023_24_G01","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/2ad47a0b7dc8fc85a423a80bfc1feb5a"},"headline":"Vertical Plotter","datePublished":"2023-12-20T22:54:26+00:00","dateModified":"2024-01-25T12:23:30+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/"},"wordCount":2838,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-55.png","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/","name":"Vertical Plotter - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-55.png","datePublished":"2023-12-20T22:54:26+00:00","dateModified":"2024-01-25T12:23:30+00:00","description":"Proyectos con Arduino. Vertical Plotter","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-55.png","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-55.png","width":739,"height":573,"caption":"Imagen del proyecto"},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/vertical-plotter\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"Vertical Plotter"}]},{"@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\/2ad47a0b7dc8fc85a423a80bfc1feb5a","name":"DSE_2023_24_G01","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/49bac5b8a1ec29c9fc743769b8f7a06cac8cda5e96fc99af9638eb06f6703e77?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/49bac5b8a1ec29c9fc743769b8f7a06cac8cda5e96fc99af9638eb06f6703e77?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/49bac5b8a1ec29c9fc743769b8f7a06cac8cda5e96fc99af9638eb06f6703e77?s=96&d=mm&r=g","caption":"DSE_2023_24_G01"},"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/dse202324g01\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/7426","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\/182"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=7426"}],"version-history":[{"count":21,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/7426\/revisions"}],"predecessor-version":[{"id":7897,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/7426\/revisions\/7897"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/7718"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=7426"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=7426"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=7426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}