{"id":4947,"date":"2022-05-13T18:00:00","date_gmt":"2022-05-13T16:00:00","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=4947"},"modified":"2022-05-13T13:22:42","modified_gmt":"2022-05-13T11:22:42","slug":"cart-o-matic","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/","title":{"rendered":"Cart-O-Matic"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introducci\u00f3n<\/h2>\n\n\n\n<p>Cart-O-Matic es un dispensador autom\u00e1tico de cartas. Este producto permite realizar, con una interacci\u00f3n r\u00e1pida y sencilla, realizar un reparto de tantas cartas como se desee a una serie de jugadores dispuestos en posici\u00f3n de juego.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>El proyecto ha sido realizado por el <strong>grupo 6<\/strong> de Sistemas Empotrados y de Tiempo Real en el Grado en Ingenier\u00eda Inform\u00e1tica (Campus de M\u00f3stoles, curso 2021-22), compuesto por tres alumnos del Doble Grado en Ingenier\u00eda Inform\u00e1tica e Ingenier\u00eda del <em>Software<\/em>:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Jorge Adame Prudencio (<a href=\"mailto:j.adame.2018@alumnos.urjc.es\">j.adame.2018@alumnos.urjc.es<\/a>).<\/li><li>Diego Guerrero Carrasco (<a href=\"mailto:d.guerrero.2018@alumnos.urjc.es\">d.guerrero.2018@alumnos.urjc.es<\/a>).<\/li><li>Alberto P\u00e9rez P\u00e9rez (<a href=\"mailto:a.perezpe.2018@alumnos.urjc.es\">a.perezpe.2018@alumnos.urjc.es<\/a>).<\/li><\/ul>\n\n\n\n<p>El presente art\u00edculo expone toda la informaci\u00f3n relativa al proyecto desde su concepci\u00f3n hasta su exposici\u00f3n en el aula en formato cronol\u00f3gico. Como consecuencia, se introduce en primer lugar el <a href=\"#dise\u00f1o-cronologia\">dise\u00f1o y ejecuci\u00f3n del proyecto en formato cronol\u00f3gico<\/a>, introduciendo cuestiones como el <a href=\"#presupuesto\">presupuesto dedicado<\/a> o la descripci\u00f3n de los <a href=\"#problemas\">problemas aparecidos y resueltos<\/a> durante la ejecuci\u00f3n del proceso; concluyendo con la exhibici\u00f3n del <a href=\"#producto-final\">proyecto en su estado final<\/a>, dividi\u00e9ndolo en tres partes esenciales: <em><a href=\"#hw-final\">hardware<\/a><\/em>, <em><a href=\"#sw-final\">software<\/a><\/em> y <a href=\"#casosuso-final\">casos de uso reales<\/a>. Una vez finalizada, se introduce un <a href=\"#video-resumen\">v\u00eddeo explicativo del proyecto<\/a> completo y una descripci\u00f3n de los <a href=\"#recursos-adicionales\">recursos adicionales<\/a> dispuestos.<\/p>\n\n\n\n<p>Este es el resultado final (<em>click<\/em> para ver a m\u00e1xima definici\u00f3n):<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/drive.google.com\/uc?export=view&amp;id=1T476UuFj65e0UdDGTJp5B6aOulwS8w_h\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/drive.google.com\/uc?export=view&amp;id=1T476UuFj65e0UdDGTJp5B6aOulwS8w_h\" alt=\"\" \/><\/a><figcaption>Visi\u00f3n general del proyecto.<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/drive.google.com\/uc?export=view&amp;id=1quyTUjWl-EV-oGifGImOPbCypKQaBltN\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/drive.google.com\/uc?export=view&amp;id=1quyTUjWl-EV-oGifGImOPbCypKQaBltN\" alt=\"\" \/><\/a><figcaption>Vista a\u00e9rea del proyecto (desacoplando las bases).<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dise\u00f1o-cronologia\">Dise\u00f1o y ejecuci\u00f3n del proyecto: cronolog\u00eda<\/h2>\n\n\n\n<p>El proceso de dise\u00f1o y desarrollo del proyecto se ha ejecutado fundamentalmente durante las horas lectivas dedicadas al proyecto en el aula, introduciendo algunas sesiones adicionales de trabajo fuera del aula para realizar los procesos m\u00e1s dif\u00edcilmente realizables en el aula \u2014como, por ejemplo, todas las tareas relacionadas con el corte de materiales\u2014. La cronolog\u00eda asociada al mencionado proceso queda resumida en los siguientes apartados:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Durante las tres primeras sesiones en el aula, el equipo procedi\u00f3 a iniciar la planificaci\u00f3n temporal y a realizar un primer dise\u00f1o del objeto f\u00edsico, tomando las primeras decisiones y analizando todas las posibles opciones en materia de dise\u00f1o. Se realizaron diversos prototipos de baja fidelidad para reunir las mejores ideas de cada integrante y as\u00ed decidir de forma com\u00fan cu\u00e1l ser\u00eda el aspecto y la funcionalidad completa del dispositivo antes de proceder a la compra de materiales f\u00edsicos y al inicio de la implementaci\u00f3n <em>software<\/em> de su funcionalidad.<br>En este punto se tomaron diversas decisiones de dise\u00f1o&nbsp;relativas al <em>hardware<\/em>&nbsp;\u2014acerca de cuestiones como, por ejemplo, los materiales empleados, las dimensiones de las superficies empleadas en el proyecto, el aspecto final del mismo y c\u00f3mo dividir el trabajo y planificarlo temporalmente de forma adecuada a las necesidades del proyecto y de cada uno de los integrantes\u2014 y&nbsp;<em>software<\/em>, valorando cuestiones sobre la divisi\u00f3n del trabajo en bloques independientes y la planificaci\u00f3n temporal del proceso.<\/li><li>La cuarta sesi\u00f3n se dedic\u00f3 a hacer la compra conjuntamente de los componentes b\u00e1sicos acordados que se utilizar\u00edan posteriormente para la construcci\u00f3n y el ensamblado del dispositivo.<\/li><li>Una vez comprados pr\u00e1cticamente todos los materiales empleados para construir el sistema, se procedi\u00f3 a la divisi\u00f3n de tareas a realizar durante el periodo vacacional de Semana Santa:<ul><li>En materia de&nbsp;<em>hardware<\/em>, cada uno de los integrantes se ocup\u00f3 de una tarea, siendo las m\u00e1s complejas de realizar y las que deb\u00edan realizarse fuera de la Universidad las siguientes tres: la confecci\u00f3n manual de un recipiente para albergar las cartas a repartir, el corte y preparaci\u00f3n de las superficies de madera y los soportes de pl\u00e1stico; y el pintado y acabado de las bases empleadas para una mejor apariencia. Se aprovech\u00f3 la coincidencia de la realizaci\u00f3n del proyecto con las vacaciones de Semana Santa para realizar estas tareas fuera de la universidad, de modo que todos los materiales estar\u00edan preparados para su ensamblaje al finalizar este periodo.<\/li><\/ul><ul><li>Por otro lado, en paralelo, se procedi\u00f3 a la implementaci\u00f3n del&nbsp;<em>software<\/em>&nbsp;que se emple\u00f3 para \u00abdar vida\u00bb al proyecto. Para ello, se dispuso un proceso de desarrollo iterativo e incremental en el que cada integrante se ocup\u00f3 de la implementaci\u00f3n de cada una de las partes del ciclo de utilizaci\u00f3n del producto: la interacci\u00f3n inicial con el usuario \u2014esto es, la interacci\u00f3n con las librer\u00edas externas empleadas para el manejo de la pantalla LCD y el mando de control por infrarrojos\u2014, la validaci\u00f3n de los datos introducidos y la realizaci\u00f3n de los c\u00e1lculos pertinentes para determinar los giros adecuados de los motores introducidos y la implementaci\u00f3n del algoritmo general para la ejecuci\u00f3n ordenada y por pasos de los distintos componentes&nbsp;<em>software<\/em>&nbsp;dispuestos en el proceso.<\/li><\/ul><\/li><li>Una vez finalizada la fase principal de implementaci\u00f3n de los componentes&nbsp;<em>hardware<\/em>&nbsp;y&nbsp;<em>software<\/em>&nbsp;del proyecto, se procedi\u00f3 a ensamblar las distintas partes para la integraci\u00f3n del producto final. Con este fin, se dispusieron tres sesiones presenciales de larga duraci\u00f3n en las que se procedi\u00f3 a la fusi\u00f3n de los componentes&nbsp;<em>software<\/em>&nbsp;implementados y a la creaci\u00f3n del algoritmo final que permitir\u00eda ejecutar toda la funcionalidad del proyecto y coordinar los distintos componentes&nbsp;<em>hardware<\/em>.<br>Por otro lado, estas sesiones tambi\u00e9n se emplearon para el ensamblaje de todas las partes que conformaban el sistema f\u00edsico, empleando una sala de trabajo grupal de la Universidad para proceder a unir todas las piezas preparadas y a preparar la circuiter\u00eda electr\u00f3nica que integra el proyecto resolviendo los \u00faltimos problemas acontecidos y finalizando con \u00e9xito el montaje del proyecto.<\/li><li>La \u00faltima de las sesiones de ensamblaje del proyecto se destin\u00f3, adem\u00e1s, a la preparaci\u00f3n de la exposici\u00f3n del producto elaborado, dividi\u00e9ndola en tres bloques esenciales:&nbsp;<em>hardware<\/em>&nbsp;\u2014incluyendo una visi\u00f3n superficial de las componentes t\u00e9cnica-electr\u00f3nica y de los materiales y su disposici\u00f3n en el producto final\u2014,&nbsp;<em>software<\/em>&nbsp;\u2014realizando un repaso por todo el c\u00f3digo implementado y aprovechando su explicaci\u00f3n en orden secuencial para revisar simult\u00e1neamente el funcionamiento del proyecto\u2014 y los casos de uso, introduciendo algunas grabaciones realizadas sobre el funcionamiento del producto.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"presupuesto\">Presupuesto<\/h3>\n\n\n\n<p>El presupuesto dispuesto se ha dividido en dos categor\u00edas: componentes electr\u00f3nicos y componentes no electr\u00f3nicos. Se introducen a continuaci\u00f3n los totales de ambas categor\u00edas y el total conjunto. A continuaci\u00f3n, se sit\u00faan dos tablas que detallan los materiales introducidos en cada una de las categor\u00edas dispuestas, especificando el importe de todos los productos (salvo aquellos proporcionados por la Universidad).<\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>Presupuesto final: suma de totales<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\"><strong>TOTAL<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>51,16 \u20ac<\/strong><\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">Componentes electr\u00f3nicos adquiridos<\/td><td class=\"has-text-align-center\" data-align=\"center\">23,71 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">Componentes no electr\u00f3ncios adquiridos<\/td><td class=\"has-text-align-center\" data-align=\"center\">27,45 \u20ac<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-text-align-center\"><strong>Presupuesto para componentes electr\u00f3nicos<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Cantidad<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Producto<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Procedencia<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Importe<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Arduino UNO R3<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de componentes<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Placa de prototipado<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de componentes<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Placa de prototipado miniatura<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de componentes<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Pantalla LCD1602<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de componentes<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Motor tipo Microservo de rotaci\u00f3n continua<\/td><td class=\"has-text-align-center\" data-align=\"center\">Compra aparte<\/td><td class=\"has-text-align-center\" data-align=\"center\">9,62 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Motor est\u00e1ndar de corriente continua<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de componentes<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Controlador de motores de puente H L298N<\/td><td class=\"has-text-align-center\" data-align=\"center\">Compra aparte<\/td><td class=\"has-text-align-center\" data-align=\"center\">7,10 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Receptor de se\u00f1ales infrarrojas<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de componentes<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Mando de control remoto por se\u00f1ales infrarrojas<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de componentes<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Resistencia 220\u03a9<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de componentes<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Potenci\u00f3metro<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de componentes<\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Conjunto de cables conectores tipo jumper<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de componentes<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Emisor de sonido piezoel\u00e9ctrico<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de componentes<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Fuente de potencia 5V 2,1A (PowerBank)<\/td><td class=\"has-text-align-center\" data-align=\"center\">Compra aparte<\/td><td class=\"has-text-align-center\" data-align=\"center\">6,99 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>TOTAL<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>23,71 \u20ac<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-text-align-center\"><strong>Presupuesto para componentes no electr\u00f3nicos<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Cantidad<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Producto<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Importe<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Varilla de madera lisa<\/td><td class=\"has-text-align-center\" data-align=\"center\">2,59 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Tabl\u00f3n de contrachapado 60x30x10 mm<\/td><td class=\"has-text-align-center\" data-align=\"center\">5,19 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Tabl\u00f3n de contrachapado 60x30x5 mm<\/td><td class=\"has-text-align-center\" data-align=\"center\">3,69 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Tubo redondo de PVC 12 mm (1 m.)<\/td><td class=\"has-text-align-center\" data-align=\"center\">1,32 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Varilla cil\u00edndrica de aluminio 4 mm (1 m.)<\/td><td class=\"has-text-align-center\" data-align=\"center\">0,92 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Papel de lija para madera<\/td><td class=\"has-text-align-center\" data-align=\"center\">0,40 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">4<\/td><td class=\"has-text-align-center\" data-align=\"center\">Conteras para embutir 20&#215;20 mm<\/td><td class=\"has-text-align-center\" data-align=\"center\">0,93 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">4<\/td><td class=\"has-text-align-center\" data-align=\"center\">Muelles de compresi\u00f3n 0,8&#215;80 mm<\/td><td class=\"has-text-align-center\" data-align=\"center\">1,77 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Paquete de tornillos y tuercas de zinc \u00f84 mm.<\/td><td class=\"has-text-align-center\" data-align=\"center\">1,95 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">4<\/td><td class=\"has-text-align-center\" data-align=\"center\">Gotas adhesivas de silicona transparente antideslizamiento<\/td><td class=\"has-text-align-center\" data-align=\"center\">2,99 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Paquete de gomas peque\u00f1as antideslizantes<\/td><td class=\"has-text-align-center\" data-align=\"center\">0,60 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">2<\/td><td class=\"has-text-align-center\" data-align=\"center\">Pinturas en spray para madera<\/td><td class=\"has-text-align-center\" data-align=\"center\">3,90 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Caja de cart\u00f3n para desplazamientos<\/td><td class=\"has-text-align-center\" data-align=\"center\">1,20 \u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>TOTAL<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>27,45 \u20ac<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"problemas\">Problemas enfrentados y resueltos durante el proyecto<\/h3>\n\n\n\n<p>Los principales problemas aparecidos durante el proyecto se han concentrado en la fase de ensamblaje y montaje del producto f\u00edsico. Los m\u00e1s destacados han sido:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>En las primeras fases del dise\u00f1o, a la hora de tomar la decisi\u00f3n sobre <strong>qu\u00e9 motores emplear para la base rotatoria de la parte inferior<\/strong> del proyecto \u2014el encargado de la rotaci\u00f3n del sistema completo\u2014, se dispusieron varias opciones. La caja de componentes inclu\u00eda un Microservo de 180 grados de rotaci\u00f3n que, si bien se ajustaba en dimensiones al tama\u00f1o ideado para este motor y permit\u00eda controlar con bastante precisi\u00f3n el \u00e1ngulo en el que se deb\u00eda colocar el dispositivo, no permit\u00eda la rotaci\u00f3n completa, hecho por el que se descart\u00f3 esta idea.<br>Por otro lado, la caja tambi\u00e9n inclu\u00eda un motor de pasos o <em>stepper<\/em>, as\u00ed como la controladora ULN2003A necesaria para manejar el tiempo y velocidad de giro de estos motores. Se realizaron varias pruebas reales con este motor, experimentando a variar su velocidad e introduciendo algunas funciones para poder calcular el \u00e1ngulo de giro, pero se termin\u00f3 descartando por su gran tama\u00f1o \u2014ya que es notablemente m\u00e1s grande que el Microservo\u2014 y por su l\u00f3gica de manejo compleja en c\u00f3digo, que a\u00f1ad\u00eda una complejidad adicional a un c\u00f3digo que ya era complejo por la gran cantidad de componentes que orquestaba.<br>Como consecuencia, se tom\u00f3 como decisi\u00f3n final la adquisici\u00f3n y utilizaci\u00f3n de un motor de tipo Microservo de rotaci\u00f3n continua, motor que a\u00fana los requisitos de tama\u00f1o del Microservo y la capacidad de girar de forma continua en ambos sentidos.<\/li><li>Uno de los principales problemas para realizar este trabajo ha sido la ausencia de un <strong>lugar adecuado para trabajar con los materiales<\/strong> empleados. Para poder trabajar con maderas y pl\u00e1sticos de cierto grosor, ha sido necesario buscar medios y lugares f\u00edsicos adecuados para ello fuera de la Universidad, ya que en esta no se ha facilitado acceso a ning\u00fan taller ni lugar habilitado a tal efecto. Adem\u00e1s, ninguno de nosotros dispon\u00edamos de medios para el corte de la madera en casa, aunque s\u00ed se dispon\u00eda de un par de pistolas termoencoladoras que nos han permitido realizar todas las uniones entre materiales necesarias.<\/li><li>En materia de electr\u00f3nica, el principal problema apareci\u00f3 cuando, una vez ensamblados los motores empleados en la pr\u00e1ctica, se descubri\u00f3 que <strong>no eran capaces de realizar los movimientos necesarios<\/strong>. La lectura de las <em>datasheet<\/em> de ambos motores nos permiti\u00f3 descubrir que la corriente enviada por la placa Arduino \u2014de 5V y 40 mA\u2014 no era suficiente, sino que era necesario emplear una corriente de mayor intensidad. Como consecuencia, se procedi\u00f3 a comprar una fuente de energ\u00eda externa que proporciona 5V y 2,1A, de modo que llegar\u00edan 1,05A a cada uno de los motores dispuestos en paralelo. Esta corriente result\u00f3 ser suficiente para efectuar con \u00e9xito los movimientos de ambos motores, logrando que el dispositivo rotase sobre su eje y que el motor de la parte superior disparase cartas de forma adecuada.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p style=\"padding-left: 2rem\">Sin embargo, cuando se quiso implementar el giro hacia atr\u00e1s del motor de la parte superior \u2014para evitar expulsar m\u00e1s de una carta en cada disparo\u2014, se descubri\u00f3 que el controlador de puente H de tipo L293D incluido en la caja de componentes no era adecuado, ya que la intensidad m\u00e1xima soportada por este componente ronda los 600 mA (seg\u00fan fabricante). Como consecuencia, fue necesario acudir a comprar un componente de igual funcionalidad y especificaciones superiores, adquiriendo el controlador L298N con interfaz para conexiones de cables (tal como se ve en la imagen adyacente).<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/www.electronicaembajadores.com\/es\/Productos\/Detalle\/LCMM037\/modulos-electronicos\/modulos-driver-controladores-de-motores\/controlador-2-motores-paso-a-paso-con-l298-2-0-a\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/drive.google.com\/uc?export=view&amp;id=12H5G_jIsw2NtHKZJCJGP_MgWeoerm_PB\" alt=\"\" width=\"254\" height=\"157\" \/><\/a><figcaption>Controlador L298N con <em>shield<\/em>.<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"producto-final\">Producto final<\/h2>\n\n\n\n<p>En este punto se muestra el producto integral obtenido tras la ejecuci\u00f3n del proceso de desarrollo anteriormente descrito en tres subsecciones:&nbsp;<em>hardware<\/em>,&nbsp;<em>software<\/em>&nbsp;y casos de uso.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"hw-final\"><em>Hardware<\/em>: esquema de componentes electr\u00f3nicos<\/h3>\n\n\n\n<p>El esquema que muestra los componentes empleados y las interconexiones establecidas entre ellos es el siguiente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/github.com\/Cart-O-Matic\/Cart-O-Matic\/blob\/main\/planoElectr\u00f3nico\/planoTinkercad.png\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/drive.google.com\/uc?export=view&amp;id=11aZP0I6iU_NuVAmoHWXG3N5Vb1VmDrIB\" alt=\"Esquema de componentes electr\u00f3nicos\" \/><\/a><figcaption>Esquema de componentes electr\u00f3nicos.<\/figcaption><\/figure>\n\n\n\n<p>Los componentes empleados son: placa Arduino UNO, potenci\u00f3metro, pantalla LCD, sensor de infrarrojos y mando emisor de se\u00f1ales infrarrojas, <em>controladora de puente H tipo L298N<\/em>, motor de corriente continua, zumbador piezoel\u00e9ctrico, <em>motor tipo Servo de rotaci\u00f3n continua<\/em>, <em>fuente de potencia de 5V 2,1A<\/em> y resistencia de 220\u03a9. Los \u00fanicos componentes externos a la caja proporcionada por la Universidad son aquellos que se destacan en tipograf\u00eda cursiva.<\/p>\n\n\n\n<p>El aspecto f\u00edsico del sistema en la realidad queda de la siguiente forma:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/drive.google.com\/uc?export=view&amp;id=1p7j7nQvPwSDFgPTsgdtPLq4OrNp4Rfmi\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/drive.google.com\/uc?export=view&amp;id=1p7j7nQvPwSDFgPTsgdtPLq4OrNp4Rfmi\" alt=\"\" \/><\/a><figcaption>Aspecto f\u00edsico de la electr\u00f3nica del proyecto.<\/figcaption><\/figure>\n\n\n\n<p>Se observan en la fotograf\u00eda anterior, de forma destacada, el controlador de puente H tipo L298N (superior izquierda), la fuente de energ\u00eda externa de 5V 2,1A (superior derecha), la placa de prototipado por la que circula la corriente del Arduino (centro), la placa de prototipado miniatura empleada para hacer circular la energ\u00eda de la fuente externa (superior derecha), la placa Arduino UNO (superior central), la pila de 9V para alimentar el Arduino (izquierda) y algunos componentes como el LCD (inferior), el receptor de se\u00f1ales infrarrojas (centro) o el emisor de sonidos tipo Piezo (derecha).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"sw-final\"><em>Software<\/em> desarrollado<\/h3>\n\n\n\n<p>Por otro lado, se introduce a continuaci\u00f3n el c\u00f3digo final empleado para orquestar el funcionamiento de los componentes&nbsp;<em>hardware<\/em>&nbsp;anteriormente descritos. Se han introducido comentarios adicionales para facilitar su comprensi\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Librer\u00edas\n#include &lt;LiquidCrystal.h&gt;\n#include &lt;IRremote.hpp&gt;\n#include &lt;Servo.h&gt;\n\n\/\/ Convenio de pines\n\/\/ Sensor infrarrojos\nint infrarrojo = 7;\n\n\/\/ Pantalla\nint db7 = 0;\nint db6 = 1;\nint db5 = 2;\nint db4 = 12;\nint screenEnable = 4;\nint screenRS = 6;\nLiquidCrystal lcd(screenRS, screenEnable, db4, db5, db6, db7);\n\n\/\/ Motor de abajo\nint motorMicroservo = 9;\nServo microservo;\n\n\/\/ Motor arriba\nint rodilloEnable = 8;\nint rodilloDirA = 10;\nint rodilloDirB = 11;\n\/\/ Piezo\nint piezo = 5;\n\n\/\/ Variables globales\n\/\/ N\u00ba de jugadores\nint numJugadores = 0;\n\/\/ N\u00ba de cartas disponibles\nint numCartas = 0;\n\/\/ Cu\u00e1ntas a cada uno\nint cartasCadaUno = 0;\n\/\/ Cuando el n\u00famero de personas no es compatible con 360, es necesario saber a\n\/\/ cu\u00e1ntas personas hay que repartir con m\u00e1s \u00e1ngulo\nint personasMasAngulo = 0;\n\/\/ N\u00famero de cartas sobrantes tras realizar el reparto (si sobran)\nint cartasSobrantes = 0;\n\n\/\/ Valores prefijados para giro de microservo\nint frecuenciaMicroservoRpm = 15;\nint velocidadSentidoCW = 30;\nint velocidadSentidoCCW = 150;\n\n\n\/\/ 1 -&gt; Interfaz de gesti\u00f3n de la pantalla LCD\nvoid imprimirYPosicionarLCD(String texto,\n                            int posCursorColumnaInicial,\n                            int posCursorFilaInicial,\n                            int posCursorColumnaFinal,\n                            int posCursorFilaFinal) {\n    lcd.setCursor(posCursorColumnaInicial, posCursorFilaInicial);\n    lcd.print(texto);\n    lcd.setCursor(posCursorColumnaFinal, posCursorFilaFinal);\n    lcd.cursor();\n}\n\nvoid inicializarLCD() {\n    lcd.begin(16, 2);\n    lcd.print(\"Bienvenido...\");\n    lcd.setCursor(0, 1);\n    for (int posicionCursor = 0; posicionCursor &lt; 16; posicionCursor++) {\n        lcd.print(\"*\");\n        delay(50);\n    }\n    delay(500);\n    lcd.clear();\n}\n\nint escribirNumeros(int valorMaximo, String rotulo, bool obligatorio) {\n    int valorNumeroFinal = 0;\n    int posColumnaCursor = 0;\n    bool pulsacionPlay = false;\n    imprimirYPosicionarLCD(rotulo, 0, 0, 0, 1);\n    IrReceiver.begin(infrarrojo, DISABLE_LED_FEEDBACK);\n    while (!pulsacionPlay) {\n        if (IrReceiver.decode()) {\n            int ultimoValorIntroducido = decodificarNumeros((unsigned long) IrReceiver.decodedIRData.decodedRawData);\n            if (ultimoValorIntroducido != -3) {\n                if (ultimoValorIntroducido != -1 &amp;&amp; ultimoValorIntroducido != -2) {\n                    if (!(ultimoValorIntroducido == 0 &amp;&amp; posColumnaCursor == 0)) {\n                        int nuevoValor = valorNumeroFinal * 10 + ultimoValorIntroducido;\n                        if (nuevoValor &lt;= valorMaximo) {\n                            valorNumeroFinal = valorNumeroFinal * 10 + ultimoValorIntroducido;\n                            posColumnaCursor = posColumnaCursor + 1;\n                            imprimirYPosicionarLCD((String) valorNumeroFinal, 0, 1, posColumnaCursor, 1);\n                        }\n                    }\n                    IrReceiver.resume();\n                } else if (ultimoValorIntroducido != -2) {\n                    if (obligatorio) {\n                        if (valorNumeroFinal != 0) {\n                            pulsacionPlay = true;\n                            lcd.clear();\n                            return valorNumeroFinal;\n                        } else {\n                            IrReceiver.resume();\n                        }\n                    } else {\n                        pulsacionPlay = true;\n                        lcd.clear();\n                        return valorNumeroFinal;\n                    }\n                } else {\n                    if (posColumnaCursor &gt; 0) {\n                        valorNumeroFinal = valorNumeroFinal \/ 10;\n                        posColumnaCursor = posColumnaCursor - 1;\n                        imprimirYPosicionarLCD(\" \", posColumnaCursor, 1, posColumnaCursor, 1);\n                    }\n                    IrReceiver.resume();\n                }\n            } else {\n                IrReceiver.resume();\n            }\n        }\n    }\n}\n\n\n\/\/ 2 -&gt; Interfaz de gesti\u00f3n de receptor de se\u00f1ales infrarrojas\nint decodificarNumeros(unsigned long numeroIR) {\n    switch (numeroIR) {\n        case 3910598400:\n            return 0;\n            break;\n        case 4077715200:\n            return 1;\n            break;\n        case 3877175040:\n            return 2;\n            break;\n        case 2707357440:\n            return 3;\n            break;\n        case 4144561920:\n            return 4;\n            break;\n        case 3810328320:\n            return 5;\n            break;\n        case 2774204160:\n            return 6;\n            break;\n        case 3175284480:\n            return 7;\n            break;\n        case 2907897600:\n            return 8;\n            break;\n        case 3041591040:\n            return 9;\n            break;\n        case 3208707840: \/\/ PLAY\n            return -1;\n            break;\n        case 3141861120: \/\/ BACK\n            return -2;\n            break;\n        default:         \/\/ OTHER VALUES\n            return -3;\n            break;\n    }\n}\n\n\n\/\/ 3 -&gt; Interfaz de control del rodillo\nvoid girarRodillo(int tiempoGiroOriginal) {\n    \/\/ Se activa giro hacia delante\n    digitalWrite(rodilloDirA, HIGH);\n    delay(tiempoGiroOriginal);\n\n    \/\/ Giro hacia atr\u00e1s\n    digitalWrite(rodilloDirA, LOW);\n    digitalWrite(rodilloDirB, HIGH);\n    delay(tiempoGiroOriginal + 300);\n\n    \/\/ Se desactiva el motor\n    digitalWrite(rodilloDirA, LOW);\n    digitalWrite(rodilloDirB, LOW);\n}\n\n\n\/\/ 4 -&gt; Interfaz de control del Piezo\nvoid sonar(int sonido) {\n    \/\/ Sonido = 0 =&gt; Sonido de \u00e9xito\n    \/\/ Sonido = 1 =&gt; Sonido de fallo\n    if (sonido == 0) {\n        int melodia&#091;] = {659, 8, 659, 8, 0, 8, 659, 8, 0, 8, 523, 8, 659, 8, 784, 4};\n        int numNotas = sizeof(melodia) \/ sizeof(melodia&#091;0]) \/ 2;\n        int tempo = 140;\n        for (int notaActual = 0; notaActual &lt; numNotas * 2; notaActual = notaActual + 2) {\n            tone(piezo, melodia&#091;notaActual], tempo * 0.9 * melodia&#091;notaActual + 1]);\n            delay(tempo);\n        }\n        noTone(piezo);\n    } else if (sonido == 1) {\n        int melodia&#091;] = {440, 4, 392, 4, 349, 4};\n        int numNotas = sizeof(melodia) \/ sizeof(melodia&#091;0]) \/ 2;\n        int tempo = 50;\n        for (int notaActual = 0; notaActual &lt; numNotas * 2; notaActual = notaActual + 2) {\n            tone(piezo, melodia&#091;notaActual], tempo * 0.9 * melodia&#091;notaActual + 1]);\n            delay(tempo);\n        }\n        noTone(piezo);\n    }\n}\n\n\n\/\/ 5 -&gt; L\u00f3gica del reparto\nbool combinacionValida() {\n    if (numJugadores &lt; 2 || numJugadores &gt; 10) {\n        return false;\n    }\n\n    if (cartasCadaUno == 0) {\n      cartasCadaUno = (int) numCartas \/ numJugadores;\n    }\n    int cartasRepartidas = numJugadores * cartasCadaUno;\n    cartasSobrantes = numCartas - cartasRepartidas;\n    return cartasSobrantes &gt;= 0;\n}\n\n\/\/ C\u00e1lculo del \u00e1ngulo seg\u00fan el n\u00famero de jugadores\n\/\/ Tiene en cuenta el posible desfase producido al tener un n\u00famero de jugadores\n\/\/ no divisible por 360 grados (p. ej. 7 jugadores).\nint calculoAngulo() {\n    float anguloDecimales = 360 \/ numJugadores;\n    float anguloEntero = floor(anguloDecimales);\n    personasMasAngulo = (int) (anguloDecimales - anguloEntero) * numJugadores;\n    return anguloEntero;\n}\n\nint anguloProximoGiro(int jugadorActual) {\n    int angulo = calculoAngulo();\n    if (jugadorActual &lt;= personasMasAngulo) {\n        return angulo + 1;\n    } else {\n        return angulo;\n    }\n}\n\nint tiempoParaAngulo(int angulo) {\n    float tiempoVueltaMilisegundos = 1.0 \/ frecuenciaMicroservoRpm * 60000;\n    float tiempoGiroAngulo = (tiempoVueltaMilisegundos * angulo) \/ 360;\n    return round(tiempoGiroAngulo);\n}\n\n\/\/ Obtiene el \u00e1ngulo para el jugador actual y metiendo el \u00e1ngulo est\u00e1ndar\nvoid girarBase(int jugadorActual, int valorServo) {\n    if (valorServo &gt; 90){\n        microservo.write(velocidadSentidoCCW);\n    } else {\n        microservo.write(velocidadSentidoCW);\n    }\n    delay(tiempoParaAngulo(anguloProximoGiro(jugadorActual)));\n    microservo.write(90);\n}\n\n\n\/\/ 6 -&gt; Gesti\u00f3n de errores (UI)\nvoid imprimirPopupPlayContinuar(String mensaje, int sonidoAsociado) {\n    imprimirYPosicionarLCD(mensaje, 0, 0, 0, 1);\n    imprimirYPosicionarLCD(\"Play continuar\", 0, 1, 14, 1);\n    if (sonidoAsociado &gt;= 0) {\n        sonar(sonidoAsociado);\n    }\n    IrReceiver.begin(infrarrojo, DISABLE_LED_FEEDBACK);\n    bool pulsacionPlay = false;\n    while (!pulsacionPlay) {\n        if (IrReceiver.decode()) {\n            int ValorIntroducido = decodificarNumeros((unsigned long) IrReceiver.decodedIRData.decodedRawData);\n            if (ValorIntroducido == -1) {\n                pulsacionPlay = true;\n            } else {\n                IrReceiver.resume();\n            }\n        }\n    }\n    lcd.clear();\n}\n\n\n\/\/ 7 -&gt; Inicializaci\u00f3n\nvoid inicializarComprobarParametros() {\n    bool valido = false;\n    do {\n        numJugadores = escribirNumeros(99, \"Num jugadores:\", true);\n        numCartas = escribirNumeros(999, \"Num cartas:\", true);\n        cartasCadaUno = escribirNumeros(99, \"Cartas x jug:\", false);\n\n        valido = combinacionValida();\n        if (!valido) imprimirPopupPlayContinuar(\"Comb imposible\", 1);\n        lcd.clear();\n    } while (!valido);\n\n    \/\/ cartasSobrantes se inicializa al validar\n    if (cartasCadaUno == 0) cartasCadaUno = (numCartas - cartasSobrantes) \/ numJugadores;\n}\n\nvoid setup() {\n    \/\/ Configuraci\u00f3n de pines que no dependen de librer\u00edas\n    pinMode(rodilloEnable, OUTPUT);\n    pinMode(rodilloDirA, OUTPUT);\n    pinMode(rodilloDirB, OUTPUT);\n\n    \/\/ Configuraci\u00f3n microservo\n    microservo.attach(motorMicroservo);\n\n    \/\/ Inicializaci\u00f3n de pantalla y de interacci\u00f3n con usuario\n    inicializarLCD();\n}\n\n\n\/\/ 8 -&gt; Algoritmo c\u00edclico (loop)\nvoid loop() {\n    \/\/ 1 -&gt; Inicializar par\u00e1metros\n    \/\/ Interacci\u00f3n con el usuario para inicializar valores\n    inicializarComprobarParametros();\n    \n    \/\/ 2 -&gt; Solo se contin\u00faa cuando todo ha ido bien\n    \/\/ Para empezar a repartir tengo que saber con qu\u00e9 angulo voy a hacerlo\n    \/\/ Puedo tener \u00e1ngulos diferentes seg\u00fan el n\u00ba de jugadores, importante usar bien el personasMasAngulo\n    \/\/ Jugadores numerados de 1 a n, donde n es el n\u00ba de jugadores total\n    int jugadorActual = 1;\n\n    \/\/ Una vuelta en cada sentido, as\u00ed que controlo el sentido\n    \/\/ Empiezo en horario (0) y luego antihorario (180)\n    \/\/ El servo para con 90\n    int valorServo = 0;\n\n    \/\/ He dado x vueltas\n    int vueltasCompletas = 0;\n\n    \/\/ While hasta llegar al n\u00ba de cartas para cada uno\n    while (vueltasCompletas &lt; cartasCadaUno) {\n        \/\/ Lanzo carta\n        girarRodillo(260);\n        cartasSobrantes -= 1;\n        \/\/ Sujeto repartido, sumo\/resto y a otra cosa\n        if (valorServo == 0) jugadorActual += 1;\n        else if (valorServo == 180) jugadorActual -= 1;\n        \/\/ Controlo l\u00edmites\n        \/\/ Si he terminado una vuelta en sentido horario cambio valor de servo y vamos a restar, pero a este le reparto carta de nuevo\n        if (jugadorActual == numJugadores + 1) {\n            valorServo = 180;\n            vueltasCompletas += 1;\n            jugadorActual -= 1;\n        } else if (jugadorActual == 0) {\n            valorServo = 0;\n            vueltasCompletas += 1;\n            jugadorActual += 1;\n        } else {\n            girarBase(jugadorActual, valorServo);\n        }\n    }\n    \/\/ Reparto terminado\n    imprimirPopupPlayContinuar(\"Fin\", 0);\n}<\/code><\/pre>\n\n\n\n<p>Este c\u00f3digo se puede visualizar al completo en un formato m\u00e1s legible <a href=\"https:\/\/github.com\/Cart-O-Matic\/Cart-O-Matic\/blob\/main\/softwareArduinoUNO\/softwareArduinoUNO.ino\" target=\"_blank\" rel=\"noreferrer noopener\">haciendo <em>click<\/em> aqu\u00ed<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"casosuso-final\">Casos de uso<\/h3>\n\n\n\n<p>Se introducen a continuaci\u00f3n dos v\u00eddeos cortos que permiten ver el dispositivo en funcionamiento:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-gestor-del-servicio wp-block-embed-gestor-del-servicio wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/youtube.com\/watch?v=Uc47wAqr4bg\n<\/div><figcaption>Caso 1: inicializaci\u00f3n de valores.<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-gestor-del-servicio wp-block-embed-gestor-del-servicio wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/youtube.com\/watch?v=lw5AAjctp8w\n<\/div><figcaption>Caso 2: funcionamiento del sistema.<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"video-resumen\">V\u00eddeo resumen del proyecto<\/h2>\n\n\n\n<p>En este v\u00eddeo-resumen del proyecto, los miembros del grupo revisan el producto final elaborado en tres secciones principales: <em>hardware<\/em>, <em>software<\/em> y casos de uso:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-gestor-del-servicio wp-block-embed-gestor-del-servicio wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/youtube.com\/watch?v=p7slnyRjTak\n<\/div><\/figure>\n\n\n\n<p>Este v\u00eddeo puede ser visualizado en YouTube <a href=\"https:\/\/bit.ly\/SETR-G6-Video\">haciendo <em>click<\/em> aqu\u00ed<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"recursos-adicionales\">Recursos asociados y contacto<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/drive.google.com\/uc?export=view&amp;id=1irq3zEiu95Zoz3spiqTcW9F3WztLzjfE\" alt=\"\" \/><figcaption>Informaci\u00f3n sobre v\u00edas de divulgaci\u00f3n acerca del proyecto.<\/figcaption><\/figure>\n\n\n\n<p>Todos los recursos empleados para la ejecuci\u00f3n de la pr\u00e1ctica est\u00e1n disponibles en un repositorio de acceso p\u00fablico para su libre visualizaci\u00f3n y reutilizaci\u00f3n bajo licencia Apache 2.0. El repositorio puede ser accedido <a rel=\"noreferrer noopener\" href=\"https:\/\/bit.ly\/SETR-G6-Repo\" target=\"_blank\">haciendo <em>click<\/em> aqu\u00ed<\/a>. Los archivos que se introducen son:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Presentaci\u00f3n empleada para la exposici\u00f3n realizada en el aula el viernes 29 de abril de 2022.<\/li><li>C\u00f3digo implementado y cargado en la placa Arduino UNO en la fecha de la exposici\u00f3n y de la grabaci\u00f3n de los v\u00eddeos introducidos en este <em>post<\/em>.<\/li><li>Modelo 3D desarrollado en formato SCAD exportado como STL del aspecto f\u00edsico del producto.<\/li><li>Esquema en m\u00e1xima resoluci\u00f3n del plano de componentes electr\u00f3nicos empleado en la presentaci\u00f3n adjunta.<\/li><li>Memoria ejecutiva sobre la realizaci\u00f3n del proyecto en formato PDF. Contiene la misma informaci\u00f3n que el <em>post<\/em> del <em>blog<\/em> oficial de la asignatura.<\/li><\/ul>\n\n\n\n<p>Cualquier pregunta que se desee realizar sobre el funcionamiento del producto puede ser realizada a trav\u00e9s de las v\u00edas de contacto dispuestas en el repositorio al que se enlaza anteriormente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Cart-O-Matic es un dispensador autom\u00e1tico de cartas. Este producto permite realizar, con una interacci\u00f3n r\u00e1pida y sencilla, realizar un reparto de tantas cartas como se desee a una serie de jugadores dispuestos en&#46;&#46;&#46;<\/p>\n","protected":false},"author":42,"featured_media":5372,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4947","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>Cart-O-Matic - Proyectos con Arduino.<\/title>\n<meta name=\"description\" content=\"Cart-O-Matic es un dispensador autom\u00e1tico de cartas realizado para la asignatura Sistemas Empotrados de la Universidad Rey Juan Carlos.\" \/>\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\/cart-o-matic\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cart-O-Matic - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Cart-O-Matic es un dispensador autom\u00e1tico de cartas realizado para la asignatura Sistemas Empotrados de la Universidad Rey Juan Carlos.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-13T16:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/FotoProyecto1_General.png\" \/>\n\t<meta property=\"og:image:width\" content=\"750\" \/>\n\t<meta property=\"og:image:height\" content=\"764\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 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\\\/cart-o-matic\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Cart-O-Matic\",\"datePublished\":\"2022-05-13T16:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/\"},\"wordCount\":2613,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/FotoProyecto1_General.png\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/\",\"name\":\"Cart-O-Matic - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/FotoProyecto1_General.png\",\"datePublished\":\"2022-05-13T16:00:00+00:00\",\"description\":\"Cart-O-Matic es un dispensador autom\u00e1tico de cartas realizado para la asignatura Sistemas Empotrados de la Universidad Rey Juan Carlos.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/FotoProyecto1_General.png\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/FotoProyecto1_General.png\",\"width\":750,\"height\":764},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/cart-o-matic\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cart-O-Matic\"}]},{\"@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\":\"\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cart-O-Matic - Proyectos con Arduino.","description":"Cart-O-Matic es un dispensador autom\u00e1tico de cartas realizado para la asignatura Sistemas Empotrados de la Universidad Rey Juan Carlos.","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\/cart-o-matic\/","og_locale":"es_ES","og_type":"article","og_title":"Cart-O-Matic - Proyectos con Arduino.","og_description":"Cart-O-Matic es un dispensador autom\u00e1tico de cartas realizado para la asignatura Sistemas Empotrados de la Universidad Rey Juan Carlos.","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2022-05-13T16:00:00+00:00","og_image":[{"width":750,"height":764,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/FotoProyecto1_General.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"","Tiempo de lectura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/"},"author":{"name":"","@id":""},"headline":"Cart-O-Matic","datePublished":"2022-05-13T16:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/"},"wordCount":2613,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/FotoProyecto1_General.png","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/","name":"Cart-O-Matic - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/FotoProyecto1_General.png","datePublished":"2022-05-13T16:00:00+00:00","description":"Cart-O-Matic es un dispensador autom\u00e1tico de cartas realizado para la asignatura Sistemas Empotrados de la Universidad Rey Juan Carlos.","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/FotoProyecto1_General.png","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/FotoProyecto1_General.png","width":750,"height":764},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/cart-o-matic\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"Cart-O-Matic"}]},{"@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":"","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/4947","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\/42"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=4947"}],"version-history":[{"count":95,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/4947\/revisions"}],"predecessor-version":[{"id":5595,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/4947\/revisions\/5595"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/5372"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=4947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=4947"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=4947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}