{"id":8236,"date":"2024-05-06T20:28:26","date_gmt":"2024-05-06T18:28:26","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=8236"},"modified":"2024-05-06T20:31:32","modified_gmt":"2024-05-06T18:31:32","slug":"si-hockey","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/","title":{"rendered":"S\u00ed, Hockey."},"content":{"rendered":"\n<h5 class=\"wp-block-heading has-medium-font-size\">GRUPO 2<\/h5>\n\n\n\n<p class=\"has-medium-font-size\">Formado por los integrantes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sara Garc\u00eda Rodr\u00edguez<\/li>\n\n\n\n<li>Eva G\u00f3mez Fern\u00e1ndez<\/li>\n\n\n\n<li>David Enrique Orna Alcobendas<\/li>\n\n\n\n<li>Alicia Pina Zapata<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"240\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/intro-1-1024x240.png\" alt=\"\" class=\"wp-image-8266\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/intro-1-1024x240.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/intro-1-300x70.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/intro-1-768x180.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/intro-1.png 1301w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Este proyecto llamado <strong>S\u00ed, Hockey<\/strong>, se trata del montaje de una mesa de Air Hockey completamente funcional. La idea principal del proyecto era la construcci\u00f3n de un tablero con un sistema de detecci\u00f3n de goles y que estos goles tuvieran una respuesta por el sistema en forma de un contador y luces interactivas. Adem\u00e1s, se ten\u00eda que contar con un sistema de ventilaci\u00f3n capaz de generar aire suficienta para lograr el deslizamiento del disco.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"212\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/MAT-1-1024x212.png\" alt=\"\" class=\"wp-image-8267\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/MAT-1-1024x212.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/MAT-1-300x62.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/MAT-1-768x159.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/MAT-1.png 1301w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Para la construcci\u00f3n de <strong>S\u00ed, Hockey<\/strong> ha sido necesario el uso de distintos materiales, tanto proporcionados por la universidad como comprados por nosotros.<\/p>\n\n\n\n<p>En primer lugar, en la siguiente tabla se enumeran los materiales utilizados para la construcci\u00f3n del tablero del air hockey:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Material<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Cantidad<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Precio (\u20ac)<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Metacrilato<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 unidad<\/td><td class=\"has-text-align-center\" data-align=\"center\">32.99<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Cortes de contrachapado<\/td><td class=\"has-text-align-center\" data-align=\"center\">3 tablas<\/td><td class=\"has-text-align-center\" data-align=\"center\">26.67<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Listones de madera<\/td><td class=\"has-text-align-center\" data-align=\"center\">4 unidades<\/td><td class=\"has-text-align-center\" data-align=\"center\">9.96<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Imprimaci\u00f3n<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 bote<\/td><td class=\"has-text-align-center\" data-align=\"center\">11.99<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Pintura acr\u00edlica<\/td><td class=\"has-text-align-center\" data-align=\"center\">3 botes<\/td><td class=\"has-text-align-center\" data-align=\"center\">24.99<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Tornillos<\/td><td class=\"has-text-align-center\" data-align=\"center\">60 unidades<\/td><td class=\"has-text-align-center\" data-align=\"center\">17.34<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Cubre-tornillos<\/td><td class=\"has-text-align-center\" data-align=\"center\">40 unidades<\/td><td class=\"has-text-align-center\" data-align=\"center\">3.98<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Cola de Carpintero<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 bote<\/td><td class=\"has-text-align-center\" data-align=\"center\">3.19<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Protector de esquinas<\/td><td class=\"has-text-align-center\" data-align=\"center\">4 piezas<\/td><td class=\"has-text-align-center\" data-align=\"center\">4.7<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Fieltro<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 plancha<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.29<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>TOTAL<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>136.90<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Una vez listados los materiales anteriores, se pasa a enumerar los materiales que se han necesitado para el montaje de los circuitos a lo largo del desarrollo del proyecto:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Material<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Cantidad<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Precio (\u20ac)<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Arduino UNO<\/td><td class=\"has-text-align-center\" data-align=\"center\">2 placas<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">4-digit 7-segment display<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 pieza<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Cableado<\/td><td class=\"has-text-align-center\" data-align=\"center\">20 metros<\/td><td class=\"has-text-align-center\" data-align=\"center\">7.00<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Emisores l\u00e1ser<\/td><td class=\"has-text-align-center\" data-align=\"center\">2 unidades<\/td><td class=\"has-text-align-center\" data-align=\"center\">7.49<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Receptores l\u00e1ser<\/td><td class=\"has-text-align-center\" data-align=\"center\">2 unidades<\/td><td class=\"has-text-align-center\" data-align=\"center\">6.99<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Bot\u00f3n \/ Interruptor<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 unidad<\/td><td class=\"has-text-align-center\" data-align=\"center\">9.89<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Ventiladores<\/td><td class=\"has-text-align-center\" data-align=\"center\">4 unidades<\/td><td class=\"has-text-align-center\" data-align=\"center\">18.38<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Pilas<\/td><td class=\"has-text-align-center\" data-align=\"center\">16 unidades<\/td><td class=\"has-text-align-center\" data-align=\"center\">9.39<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Portapilas<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 unidad<\/td><td class=\"has-text-align-center\" data-align=\"center\">6.99<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Bater\u00eda port\u00e1til<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 unidad<\/td><td class=\"has-text-align-center\" data-align=\"center\">20.99<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Pila de 9V<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 unidad<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.99<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Cable USB<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 unidad<\/td><td class=\"has-text-align-center\" data-align=\"center\">6.57<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">LEDs<\/td><td class=\"has-text-align-center\" data-align=\"center\">12 unidades<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Zumbador \/ Buzzer<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 unidad<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Protoboard<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 unidad<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>TOTAL<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>97,67<\/strong><\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">* sin incluir los precios de los materiales proporcionados por la Universidad<\/figcaption><\/figure>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/de-compras-768x1024.jpg\" alt=\"\" class=\"wp-image-8457\" style=\"width:349px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/de-compras-768x1024.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/de-compras-225x300.jpg 225w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/de-compras-1152x1536.jpg 1152w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/de-compras-1536x2048.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/de-compras-scaled.jpg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n<\/div>\n\n\n<p>Adem\u00e1s de los materiales anteriores, se utilizaron materiales y herramientas que ten\u00edamos como taladro, destornillador el\u00e9ctrico y manual, soldador de esta\u00f1o, cinta aislante&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"239\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CONST-1024x239.png\" alt=\"\" class=\"wp-image-8324\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CONST-1024x239.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CONST-300x70.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CONST-768x179.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CONST.png 1301w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>La construcci\u00f3n se separ\u00f3 en dos partes desarrolladas de manera simult\u00e1nea: el montaje del tablero y el ensamblado de los circuitos.<\/p>\n\n\n\n<p>Para el desarrollo del tablero de juego se comenz\u00f3 haciendo un dise\u00f1o a papel del mismo con las medidas necesarias, siendo estas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lado largo: 65cm x 20cm<\/li>\n\n\n\n<li>Lado corto: 40cm x 20cm<\/li>\n\n\n\n<li>Tabla de ventiladores: 65cm x 40cm<\/li>\n<\/ul>\n\n\n\n<p>Se pas\u00f3 entonces a cortar los tablones de madera a las medidas estudiadas y, una vez cortadas, se decidi\u00f3 de qu\u00e9 manera distribuir los 4 ventiladores en la tabla. Pensamos que la idea \u00f3ptima era colocarlos haciendo un <em>zigzag<\/em> para que el aire quedase distribuido de la manera m\u00e1s uniforme posible.<\/p>\n\n\n\n<p>Tras esto, se agujere\u00f3 la tabla utilizando un taladro para poder poner los ventiladores y se atornillaron en sus debidas posiciones.<\/p>\n\n\n\n<p>Se cortaron los listones que dar\u00edan soporte al metacrilato, se hizo el agujero de las porter\u00edas de cada equipo y se procedi\u00f3 al montaje del tablero. Para el montaje, se taladr\u00f3 y atornill\u00f3, formando las cuatro paredes y poniendo los listones a modo de \u00absomier\u00bb donde reposa el metacrilato. La tabla de los ventiladores se situ\u00f3 de forma que tuviera 3cm entre los listones y la tabla ya que, de esta manera, pod\u00edan caber los ventiladores de 2,5cm de alto. Con esto se finaliz\u00f3 la etapa de carpinter\u00eda.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"565\" height=\"700\" data-id=\"8455\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/taladro.png\" alt=\"\" class=\"wp-image-8455\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/taladro.png 565w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/taladro-242x300.png 242w\" sizes=\"auto, (max-width: 565px) 100vw, 565px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"572\" height=\"762\" data-id=\"8456\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/taladro2.png\" alt=\"\" class=\"wp-image-8456\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/taladro2.png 572w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/taladro2-225x300.png 225w\" sizes=\"auto, (max-width: 572px) 100vw, 572px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"452\" height=\"651\" data-id=\"8454\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/tornillo.png\" alt=\"\" class=\"wp-image-8454\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/tornillo.png 452w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/tornillo-208x300.png 208w\" sizes=\"auto, (max-width: 452px) 100vw, 452px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Mientras unos montaron el tablero, otros iban probando circuitos de manera individual. El primero que se prob\u00f3 fue el de los l\u00e1ser y receptores, ya que al no ser de la caja proporcionada por la universidad no conoc\u00edamos su funcionamiento. Para ello se hizo un circuito y c\u00f3digo simple que detectase cuando algo pasaba entre el l\u00e1ser y receptor. Una vez confirmado su correcto funcionamiento, se llev\u00f3 a cabo el correspondiente al contador de puntos, primero de manera independiente y luego junto al anterior para mostrar esos cambios en el 4-digit 7-segment display.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"2560\" data-id=\"8460\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/montaje-pantalla1-1-edited-scaled.jpg\" alt=\"\" class=\"wp-image-8460\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/montaje-pantalla1-1-edited-scaled.jpg 1920w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/montaje-pantalla1-1-edited-225x300.jpg 225w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/montaje-pantalla1-1-edited-768x1024.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/montaje-pantalla1-1-edited-1152x1536.jpg 1152w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/montaje-pantalla1-1-edited-1536x2048.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"576\" height=\"702\" data-id=\"8458\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/probando-laser.png\" alt=\"\" class=\"wp-image-8458\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/probando-laser.png 576w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/probando-laser-246x300.png 246w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Fue aqu\u00ed cuando vimos necesario la utilizaci\u00f3n de otra placa arduino debido a la falta de pins. Para estudiar la manera en la que comunicarlos, se conectaron pins de un arduino a otro de manera que, mediante un c\u00f3digo desarrollad,o uno mandase una se\u00f1al y el otro la recibiera.<\/p>\n\n\n\n<p>Quisimos adem\u00e1s introducir un bot\u00f3n que se ocupase tanto de encender los ventiladores como avisar al Arduino <em>padre<\/em> de que se iniciara el juego. De esta manera se podr\u00eda mejorar el sistemal, haciendolo m\u00e1s empotrado e independiente a tener que estar d\u00e1ndole alimentaci\u00f3n constante.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"523\" height=\"693\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/montaje-boton.png\" alt=\"\" class=\"wp-image-8361\" style=\"width:363px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/montaje-boton.png 523w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/montaje-boton-226x300.png 226w\" sizes=\"auto, (max-width: 523px) 100vw, 523px\" \/><\/figure>\n<\/div>\n\n\n<p>Cuando pudimos estimar que la comunicaci\u00f3n pod\u00eda funcionar correctamente unimos todos los circuitos y vimos c\u00f3mo pod\u00edamos mandar la detecci\u00f3n de un cambio en los receptores de l\u00e1ser del <em>Arduino maestro<\/em> al <em>Arduino esclavo<\/em>, que se encarga de mostrar la puntuaci\u00f3n en el contador. Cuando se finaliz\u00f3 esta tarea, solo quedaba que se notificase estos goles en forma de luz y m\u00fasica. Las pruebas individuales de estos fueron m\u00e1s sencillas.<\/p>\n\n\n\n<p>Cuando ya se ten\u00edan probados los circuitos por separado, se integraron con el tablero y se dio comienzo al desarrollo del c\u00f3digo final, a\u00f1adiendo detalles como m\u00fasica personalizada (compuesta nota a nota), parpadeos de leds y efectos en el contador cuando el juego llegase a su fin.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"401\" height=\"490\" data-id=\"8462\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/piano.png\" alt=\"\" class=\"wp-image-8462\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/piano.png 401w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/piano-246x300.png 246w\" sizes=\"auto, (max-width: 401px) 100vw, 401px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" data-id=\"8461\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/soldar-1024x551.png\" alt=\"\" class=\"wp-image-8461\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/soldar-1024x551.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/soldar-300x161.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/soldar-768x413.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/soldar.png 1267w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>El circuito qued\u00f3 escondido bajo el tablero de los ventiladores siendo el resultado el presentado a continuaci\u00f3n.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1920\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/circuit-final-edited-scaled.jpg\" alt=\"\" class=\"wp-image-8372\" style=\"width:484px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/circuit-final-edited-scaled.jpg 2560w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/circuit-final-edited-300x225.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/circuit-final-edited-1024x768.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/circuit-final-edited-768x576.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/circuit-final-edited-1536x1152.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/circuit-final-edited-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/figure>\n<\/div>\n\n\n<p>Finalmente, se imprimieron en 3D los elementos de juego y se montaron con cart\u00f3n las porter\u00edas y la zona donde se colocar\u00eda el contador de puntuaciones. Decidimos los colores del juego de manera que se pudiera diferenciar los equipos y los elementos comunes (disco, marcador&#8230;) siendo estos colores amarillo, azul y rojo, pintamos los elementos y pegamos las porter\u00edas al tablero de juego utilizando silicona caliente.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"562\" height=\"765\" data-id=\"8365\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/pintura-metacrilato.png\" alt=\"\" class=\"wp-image-8365\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/pintura-metacrilato.png 562w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/pintura-metacrilato-220x300.png 220w\" sizes=\"auto, (max-width: 562px) 100vw, 562px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-id=\"8366\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-768x1024.jpg\" alt=\"\" class=\"wp-image-8366\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-768x1024.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-225x300.jpg 225w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-1152x1536.jpg 1152w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-1536x2048.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-scaled.jpg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Con esto concluy\u00f3 el montaje total de nuestro proyecto.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"223\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/SOFT-1024x223.png\" alt=\"\" class=\"wp-image-8329\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/SOFT-1024x223.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/SOFT-300x65.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/SOFT-768x167.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/SOFT.png 1301w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>A continuaci\u00f3n, se presentan las funciones principales referentes a cada Arduino para que el sistema funcionara de forma correcta.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Arduino hijo<\/h5>\n\n\n\n<p>Esta placa se encarga de enviar las acciones al marcador (7-segment 4-digits display) seg\u00fan lo que recibe del Arduino <em>padre<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"SevSeg.h\"\nSevSeg sevseg;\n \n\/\/ Valores:gol,juego,inicio y fin\nint val1;\nint lastVal1;\nint val2;\nint lastVal2;\nint goal_count_y;\nint goal_count_b;\nint readgoal1;\nint readgoal2;\nint newgame;\nint playing;\nint restart;\nint last_restart; \nint finish_game;\nint last_finish_game;\n\n\/\/ Pins\nconst int RESTARTSIGNAL=A4;\nconst int FINISHSIGNAL=A5;\nconst int GOALYELLOW=A2;\nconst int GOALBLUE=A3;\n\nvoid setup(){\n  \/\/ Pins mode setup\n  pinMode(GOALYELLOW,INPUT);\n  pinMode(GOALBLUE,INPUT);\n  pinMode(RESTARTSIGNAL,INPUT);\n  \/\/ Inicializaci\u00f3n variables\n  lastVal1=LOW;\n  lastVal2=LOW;\n  last_restart=LOW;\n  playing=false;\n  last_finish_game=LOW;\n  restart=LOW;\n  \/\/ Inicializaci\u00f3n de los goles a 0\n  goal_count_y=0;\n  goal_count_b=0;\n\n  \/\/ Inicializaci\u00f3n del marcador\n  byte numDigits = 4;\n  byte digitPins&#091;] = {10, 11, 12, 13};\n  byte segmentPins&#091;] = {9, 2, 3, 5, 6, 8, 7, 4};\n  bool resistorsOnSegments = true; \n  byte hardwareConfig = COMMON_CATHODE; \n  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);\n  sevseg.setBrightness(90);\n  sevseg.refreshDisplay();\n  sevseg.setNumber(0, -1);\n}\n\n<\/code><\/pre>\n\n\n\n<p>Tras la definici\u00f3n de las variables y constantes necesarias, la funci\u00f3n <em>setup()<\/em> inicializa las mismas. Se indican de entrada los pines que recibe de la otra placa y se inicializan las variables de la l\u00f3gica del c\u00f3digo (las que almacenan el ultimo valor de las se\u00f1ales a baja y el contador de goles a 0). Adem\u00e1s, se definen dos arrays num\u00e9ricos para el control del marcador y se establecen los valores del <em>seven-segment<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void start(){\n  \/\/ Animaci\u00f3n del marcador\n  for(int i=0; i&lt;10; i++){\n    sevseg.refreshDisplay();\n    sevseg.setNumber(0, 4);\n    delay(200);\n  }\n  \/\/ Iniciar goles\n  goal_count_y=0;\n  goal_count_b=0;\n  \/\/ Jugando\n  playing=true;\n}<\/code><\/pre>\n\n\n\n<p>En la funci\u00f3n <em>start()<\/em>, se muestran en el marcador los 0 de manera parpadeante (con 200ms de intervalo), como secuencia de inicio de juego. Asimismo, se establecen los contadores de goles a 0, se indica en el serial que se ha comenzado y el booleano de que se esta jugando actualmente se pone a verdadero.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void finish(){\n  \/\/ Si se ha producido una victoria, el marcador muestra efectos visuales que indican la misma\n  if(goal_count_y==3 || goal_count_b==3){\n    for(int i=0; i&lt;15; i++){\n        sevseg.refreshDisplay();\n        int cont= goal_count_y*1000+goal_count_b*10;\n        sevseg.setNumber(cont, 4);\n        delay(250);\n      }\n  }\n  goal_count_y=0;\n  goal_count_b=0;\n  playing=false;  \n  sevseg.refreshDisplay();\n}\n\n<\/code><\/pre>\n\n\n\n<p>En la funci\u00f3n <em>finish()<\/em>, si se ha alcanzado la puntuaci\u00f3n m\u00e1xima (3) en alguno de los dos jugadores, se muestra el marcador final de forma parpadeante a modo de secuencia de fin de partida. En cualquier caso, se reinician los contadores y se pone a falso el booleano de juego.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void loop(){\n  restart=digitalRead(RESTARTSIGNAL);\n  finish_game=digitalRead(FINISHSIGNAL);\n \/\/ Se acaba de terminar el juego\n  if(last_finish_game==LOW &amp;&amp; finish_game==HIGH) {\n    finish();\n  }\n  \/\/ Se acaba de inicializar el juego\n  if(last_restart==LOW &amp;&amp; restart==HIGH){\n    start();\n  }\n\n  if(playing){\n    val1=digitalRead(GOALYELLOW);\n    val2=digitalRead(GOALBLUE);\n   \/\/ Gol en la porter\u00eda amarilla\n    if(val1==HIGH &amp;&amp; lastVal1==LOW){ \n      goal_count_b++;\n    }\n    \/\/ Gol en la porter\u00eda azul\n    if(val2==HIGH &amp;&amp; lastVal2==LOW){\n      goal_count_y++;\n    }\n    lastVal1=val1;\n    lastVal2=val2;\n\n   \/\/ Actualizaci\u00f3n del Contador\n    Int cont= goal_count_y*1000 +goal_count_b*10;\n    sevseg.refreshDisplay();\n    sevseg.setNumber(cont, 4);\n  }\n  else{\n    \/\/ Marcador \"apagado\"\n    sevseg.refreshDisplay();\n    sevseg.setNumber(0, -1);\n  }\n\n  \/\/Guardan los valores \n  last_restart=restart;\n  last_finish_game=finish_game;\n}<\/code><\/pre>\n\n\n\n<p>La funci\u00f3n <em>loop()<\/em> que est\u00e1 ejecut\u00e1ndose de forma constante durante el juego, controla el funcionamiento de la placa. Guarda en unas variables si hay que empezar la partida de nuevo o se ha terminado (seg\u00fan las se\u00f1ales recibidas del Arduino <em>padre<\/em>) y solo cuando esas variables cambian (con respecto a lo que tuviera guardado en su hom\u00f3nimo con el prefijo <em>last<\/em>), se llama a las funciones de inicio o final, respectivamente.<\/p>\n\n\n\n<p>Si est\u00e1 en proceso de juego, se lee el valor de la puntuaci\u00f3n de cada jugador de la se\u00f1al recibida de la otra placa, y si esta ha cambiado (comprob\u00e1ndose de manera an\u00e1loga a lo de inicio y fin), se considera que ha habido gol. En funci\u00f3n del jugador que haya marcado, se modifica su contador. Se sobrescribe la variable que guarda el ultimo valor recibido en la se\u00f1al de gol y se escribe el resultado actual en el display.<\/p>\n\n\n\n<p>Si no se est\u00e1 jugando, se apaga el contador, no mostrando nada. Finalmente, se sobrescriben las variables que guardaban el \u00faltimo valor de inicio y fin.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Arduino Padre<\/h5>\n\n\n\n<p>Esta placa se encarga del grosso de la l\u00f3gica de juego, controlando la mayor\u00eda de los componentes y enviando las se\u00f1ales correspondientes a la otra placa.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/Sonidos\n#define NOTE_E5 659\n#define NOTE_FS5 740\n#define NOTE_G5 784\n#define NOTE_F5 698\n#define NOTE_A5 880\n#define NOTE_B5 988\n#define NOTE_C6 1047\n#define NOTE_D6 1175\n\nconst int G3 = 196;\nconst int Gb3 = 208;     \nconst int Ab3 = 233;\nconst int C = 262;\nconst int D = 294;\nconst int Db = 311;\nconst int E = 330;\nconst int F = 349;\nconst int G = 392;\nconst int Gb = 415;\nconst int Ab = 440;\nconst int C5 = 523;\nconst int D5 = 587;\nconst int Db5 = 622;\nconst int E5 = 659;\nconst int G5 = 784;\nconst int Gb5 = 831;\nconst int Ab5 = 932;\nconst int C6 = 1046;\n\n\/\/ Pins\nconst int YELLOW_LEDS=2;\nconst int BLUE_LEDS=12;\nconst int YELLOW_LASER=5;\nconst int YELLOW_RECEIVER=4;\nconst int BLUE_LASER=7;\nconst int BLUE_RECEIVER=6;\nconst int GOAL_YELLOW=8;\nconst int GOAL_BLUE=9;\nconst int START_GAME=10;\nconst int FINISH_GAME=11;\nconst int SCOREBOARD_LEDS=13;\nconst int BUTTON = A4;\nconst int BUZZER = 3;\t\n\n\/\/ barrera para pulsaci\u00f3n del bot\u00f3n \nconst int BARRIER_ON = 500;\n\n\/\/ valores de los lasers\nint val_yellow; \nint lastVal_yellow;\nint val_blue;\nint lastVal_blue;\n\n\/\/ anterior valor del bot\u00f3n de inicio\nint last_button;\n\n\/\/ contador de los puntos de cada jugador (blue y yellow)\nint goal_count_b;\nint goal_count_y;<\/code><\/pre>\n\n\n\n<p>En la definici\u00f3n de constantes se han incluido tanto las relacionadas con sonidos (notas musicales) que se utilizaran para emitir por el zumbador, como los pines que se han usado para cada componente. Tambi\u00e9n se establece el valor BARRIER_ON, que es la barrera que deber\u00e1 superar la lectura anal\u00f3gica del bot\u00f3n que inicia el juego para que se considere pulsado. Por otro lado, se establecen variables para el control de los l\u00e1seres, el anterior valor del bot\u00f3n y las puntuaciones.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void start_game(){\n  goal_count_b=0;\n  goal_count_y=0;\n    \/\/ Se encienden los laser\n  digitalWrite(YELLOW_LASER,HIGH);\n  digitalWrite(BLUE_LASER,HIGH);\n   \/\/ Comunicaci\u00f3n al Arduino hijo\n  digitalWrite(START_GAME,HIGH);\n\n  \/\/ M\u00fasica y luces\n  digitalWrite(YELLOW_LEDS, HIGH);\n  tone(BUZZER, NOTE_G5);\n  delay(100);\n  tone(BUZZER, NOTE_E5);\n  delay(100);\n  tone(BUZZER, NOTE_G5);\n  delay(100);\n  tone(BUZZER, NOTE_A5);\n  delay(100);\n  noTone(BUZZER);\n  \n  digitalWrite(YELLOW_LEDS, LOW);\n  delay(200);\n  digitalWrite(BLUE_LEDS, HIGH);\n\n  tone(BUZZER, NOTE_A5);\n  delay(100);\n  tone(BUZZER, NOTE_G5);\n  delay(100);\n  tone(BUZZER, NOTE_A5);\n  delay(100);\n  tone(BUZZER, NOTE_B5);\n  delay(100);\n  noTone(BUZZER);\n\n  digitalWrite(BLUE_LEDS, LOW);\n  delay(200);\n  digitalWrite(YELLOW_LEDS, HIGH);\n  tone(BUZZER, NOTE_B5);\n  delay(100);\n  tone(BUZZER, NOTE_A5);\n  delay(100);\n  tone(BUZZER, NOTE_B5);\n  delay(100);\n  tone(BUZZER, NOTE_C6);\n  delay(100);\n  noTone(BUZZER);\n  digitalWrite(YELLOW_LEDS, LOW);\n  delay(200);\n  digitalWrite(BLUE_LEDS, HIGH);\n  digitalWrite(YELLOW_LEDS, HIGH);\n  tone(BUZZER, NOTE_C6);\n  delay(100);\n  \n  digitalWrite(BLUE_LEDS, LOW);\n  digitalWrite(YELLOW_LEDS, LOW);\n  noTone(BUZZER);\n  delay(100);\n  \n  digitalWrite(BLUE_LEDS, HIGH);\n  digitalWrite(YELLOW_LEDS, HIGH);\n  tone(BUZZER, NOTE_B5);\n  delay(100);\n  digitalWrite(BLUE_LEDS, LOW);\n  digitalWrite(YELLOW_LEDS, LOW);\n  tone(BUZZER, NOTE_C6);\n  delay(100);\n  noTone(BUZZER);\n  delay(100);\n  \n  digitalWrite(BLUE_LEDS, HIGH);\n  digitalWrite(YELLOW_LEDS, HIGH);\n  tone(BUZZER, NOTE_C6);\n  delay(100);\n  tone(BUZZER, NOTE_D6);\n  delay(400);\n  noTone(BUZZER);\n  delay(100);\n  \n  digitalWrite(BLUE_LEDS, LOW);\n  digitalWrite(YELLOW_LEDS, LOW);\n  digitalWrite(SCOREBOARD_LEDS, HIGH);\n  Serial.write(\"Empieza el juego\");\n  digitalWrite(START_GAME,LOW);\n}<\/code><\/pre>\n\n\n\n<p>La funci\u00f3n <em>start_game()<\/em> activa la emisi\u00f3n de l\u00e1ser, inicializa a 0 las variables de conteo de goles y manda a la placa del <em>hijo<\/em> la se\u00f1al de comienzo de juego. Adem\u00e1s, se encarga de la secuencia de inicio de sonido y luces intermitentes y enciende los LEDs fijos del marcador.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void finish_game(){\n  \/\/ Se apagan los laser y se manda al arduino hijo la se\u00f1al de fin de partida\n  digitalWrite(YELLOW_LASER,LOW);\n  digitalWrite(BLUE_LASER,LOW);\n  digitalWrite(FINISH_GAME,HIGH);\n  delay(1000);\n  digitalWrite(FINISH_GAME,LOW);\n  digitalWrite(SCOREBOARD_LEDS, LOW);\n  goal_count_b=0;\n  goal_count_y=0; \n}<\/code><\/pre>\n\n\n\n<p>La funci\u00f3n de fin de juego apaga los laser, manda la se\u00f1al de final a la placa <em>hijo<\/em> durante un intervalo de tiempo, apaga los LEDs del marcador y reinicia las variables de conteo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void win(int led){  \n  digitalWrite(FINISH_GAME,HIGH);\n  winEffects(led);\n  delay(500);\n  digitalWrite(FINISH_GAME,LOW);\n  goal_count_b=0;\n  goal_count_y=0; \n  digitalWrite(SCOREBOARD_LEDS, LOW);\n  delay(2000);\n  start_game();\n}<\/code><\/pre>\n\n\n\n<p>La funci\u00f3n <em>win()<\/em> reinicia la partida cuando uno de los jugadores gana. Para ello, env\u00eda la se\u00f1al de fin a la otra placa, llama a los efectos visuales y de sonido y reinicia las variables de conteo y apaga las luces del marcador. A continuaci\u00f3n, llama al inicio de juego.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void goalEffects(int led){\n  for(int i=0; i&lt;3; i++) {\n    digitalWrite(led, HIGH);\n    tone(BUZZER, NOTE_E5);\n    delay(100);\n    tone(BUZZER, NOTE_FS5);\n    delay(100);\n    digitalWrite(led, LOW);\n    tone(BUZZER, NOTE_G5);\n    delay(100);\n    tone(BUZZER, NOTE_E5);\n    delay(100);\n    noTone(BUZZER);\n  }\n  delay(4000);\n}<\/code><\/pre>\n\n\n\n<p>La funci\u00f3n de los efectos de gol intercala sonidos con luces en la porter\u00eda en la que se ha marcado. Recibe como par\u00e1metro el pin del grupo de LEDs sobre el que se tiene que realizar la acci\u00f3n.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void winEffects(int led) {\n  digitalWrite(led, HIGH);\n  tone(BUZZER, G3); \n  delay(100); \n  tone(BUZZER, C); \n  delay(100);\n  tone(BUZZER, E); \n  delay(100);\n  digitalWrite(led, LOW);\n  tone(BUZZER, G);\n  delay(100);\n  tone(BUZZER, C5);\n  delay(100);\n  tone(BUZZER, E5);\n  delay(100);\n  digitalWrite(led, HIGH);\n  tone(BUZZER, G5);\n  delay(250);\n  digitalWrite(led, LOW);\n  tone(BUZZER, E5);\n  delay(250);\n  digitalWrite(led, HIGH);\n  noTone(BUZZER);\n  digitalWrite(led, LOW);\n  delay(250);\n  digitalWrite(led, HIGH);\n  tone(BUZZER, Gb3);\n  delay(100);\n  tone(BUZZER, C);\n  delay(100);\n  tone(BUZZER, Db);\n  delay(100);\n  digitalWrite(led, LOW);\n  tone(BUZZER, Gb);\n  delay(100);\n  tone(BUZZER, C5);\n  delay(100);\n  tone(BUZZER, Db5);\n  delay(100);\n  tone(BUZZER, Gb5);\n  delay(250);\n  digitalWrite(led, HIGH);\n  tone(BUZZER, Db5);\n  delay(250);\n  digitalWrite(led, LOW);\n  noTone(BUZZER);\n  delay(250);\n  digitalWrite(led, HIGH);\n  tone(BUZZER, Ab3);\n  delay(100);\n  digitalWrite(led, HIGH);\n  tone(BUZZER, D);\n  delay(100);\n  tone(BUZZER, F);\n  delay(100);\n  tone(BUZZER, Ab);\n  delay(100);\n  digitalWrite(led, LOW);\n  tone(BUZZER, D5);\n  delay(100);\n  tone(BUZZER, Ab5);\n  digitalWrite(led, HIGH);\n  delay(250);\n  digitalWrite(led, LOW);\n  noTone(BUZZER);\n  delay(50);\n  digitalWrite(led, HIGH);\n  tone(BUZZER, Ab5);\n  delay(100);\n  digitalWrite(led, LOW);\n  noTone(BUZZER);\n  delay(50);\n  digitalWrite(led, HIGH);\n  tone(BUZZER, Ab5);\n  delay(100);\n  digitalWrite(led, LOW);\n  noTone(BUZZER);\n  delay(50);\n  digitalWrite(led, HIGH);\n  tone(BUZZER, C6);\n  delay(250);\n  digitalWrite(led, LOW);\n  noTone(BUZZER);\n}\n  <\/code><\/pre>\n\n\n\n<p>Esta funci\u00f3n muestra los efectos de fin de partida intercalando luces y sonido en una secuencia intermitente. Recibe como par\u00e1metro el pin de los leds del color ganador sobre el que aplica los efectos de luz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void setup() {\n  \/\/ Pin modes setup\n  pinMode(YELLOW_LEDS,OUTPUT);\n  pinMode(BLUE_LEDS,OUTPUT);\n  pinMode(BUTTON,INPUT);\n  pinMode(YELLOW_LASER,OUTPUT);\n  pinMode(YELLOW_RECEIVER,INPUT);\n  pinMode(BLUE_LASER,OUTPUT);\n  pinMode(BLUE_RECEIVER,INPUT);\n  pinMode(GOAL_YELLOW,OUTPUT);\n  pinMode(GOAL_BLUE,OUTPUT);\n  pinMode(START_GAME,OUTPUT);\n  pinMode(FINISH_GAME,OUTPUT);\n  pinMode(SCOREBOARD_LEDS,OUTPUT);\n  pinMode(BUZZER, OUTPUT);\n\n  \/\/ Se\u00f1ales al Arduino hijo\n  digitalWrite(GOAL_YELLOW,LOW);\n  digitalWrite(GOAL_BLUE,LOW);\n  digitalWrite(FINISH_GAME,LOW);\n  digitalWrite(START_GAME,LOW);\n\n  \/\/ Inicializaci\u00f3n de los leds\n  digitalWrite(SCOREBOARD_LEDS, LOW);\n  digitalWrite(YELLOW_LASER,LOW);\n  digitalWrite(BLUE_LASER,LOW);\n\n  \/\/ Inicializaci\u00f3n de los anteriores\n  last_button=LOW;\n  lastVal_yellow=HIGH;\n  lastVal_blue=HIGH;\n\n  \/\/ Inicializaci\u00f3n de los goles a 0\n  goal_count_b=0;\n  goal_count_y=0;\n}<\/code><\/pre>\n\n\n\n<p>En <em>setup()<\/em> se inicializan los pines que se van a utilizar indicando si son de salida (leds, emisores l\u00e1ser, conexiones al Arduino <em>hijo<\/em>) o de entrada (bot\u00f3n y receptores laser). Se mandan las se\u00f1ales bajas a la otra placa para que detecte un cambio cuando se activen dichos pines, se mantienen los leds inicialmente apagados y se inicializan las variables de conteo de gol y de ultimo valor de bot\u00f3n y luces.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void loop() {\n  \/\/ Comprobar estado del bot\u00f3n\n  int button_value = analogRead(BUTTON);\n  int button_signal=LOW;\n  if(button_value&gt;BARRIER_ON) \n    button_signal = HIGH;\n  if(button_signal==HIGH){\n    \/\/ Se acaba de pulsar el bot\u00f3n\n    if(last_button==LOW){\n      start_game(); \n    }\n     val_yellow=\n       digitalRead(YELLOW_RECEIVER);\n    val_blue=\n      digitalRead(BLUE_RECEIVER);\n    \/\/ Gol en la porter\u00eda amarilla\n    if(val_yellow==HIGH &amp;&amp; lastVal_yellow==LOW){\n      \/\/ Comunicaci\u00f3n al hijo\n      digitalWrite(GOAL_YELLOW,HIGH);\n      if(goal_count_b&lt;2)   \n       \/\/ marca pero no gana       \ngoalEffects(YELLOW_LEDS);\n      else delay(1000);\n      digitalWrite(GOAL_YELLOW,LOW);\n      goal_count_b=goal_count_b+1;\n    }\n    \/\/ Gol en la porter\u00eda azul\n    if(val_blue==HIGH &amp;&amp; lastVal_blue==LOW){\n     \/\/ Comunicaci\u00f3n al hijo\n      digitalWrite(GOAL_BLUE,HIGH);\n      if(goal_count_y&lt;2) \n       \/\/ marca pero no gana\ngoalEffects(BLUE_LEDS); \n      else delay(1000);\n      digitalWrite(GOAL_BLUE,LOW);\n      goal_count_y=goal_count_y+1;\n    }\n\n    \/\/ Gana el jugador 1 (yellow)\n    if(goal_count_y==3){\n      win(YELLOW_LEDS);\n    }\n    \/\/ Gana el jugador 2 (blue)\n    if(goal_count_b==3){\n      win(BLUE_LEDS);\n    }\n    lastVal_yellow= val_yellow;\n    lastVal_blue= val_blue;\n  }\n  else{\n    \/\/ Se acaba de despulsar el bot\u00f3n de encendido\n    if(last_button==HIGH) {\n      finish_game();\n    }\n  }\n\n  \/\/ Se guarda el valor actual del bot\u00f3n (pulsado o no)\n  last_button=button_signal;\n}\n<\/code><\/pre>\n\n\n\n<p>En el <em>loop() <\/em>del c\u00f3digo, funci\u00f3n que se estar\u00e1 ejecutando indefinidamente durante el uso de <strong>S\u00ed,Hockey<\/strong>, se comprueba si el bot\u00f3n esta pulsado. Para ello, se lee el valor anal\u00f3gico del bot\u00f3n de inicio y si supera la barrera establecida, se sabe que est\u00e1 pulsado y se inicia el juego. Se recogen en dos variables lo que detectan los receptores l\u00e1ser de cada porter\u00eda y en funci\u00f3n de ello se comprueba si ha habido gol.<\/p>\n\n\n\n<p>Si lo ha habido, es decir, si hay un cambio de se\u00f1al con respecto a lo que hab\u00eda guardado en la variable <em>last<\/em>, se manda la se\u00f1al al Arduino <em>hijo<\/em> de que ha habido gol en esa porter\u00eda. Adem\u00e1s, si a\u00fan no se ha alcanzado el m\u00e1ximo de goles (3), se emiten los efectos de gol. Se reinicia la se\u00f1al que va a la otra placa sobre esta porter\u00eda a baja (para evitar que detecte m\u00e1s de un gol) despu\u00e9s de haberle estado mandando la se\u00f1al de gol durante 1 segundo. Finalmente, se aumenta la variable contador de este jugador. Esto es an\u00e1logo para la otra porter\u00eda. <\/p>\n\n\n\n<p>En caso de que un jugador llegue a los 3 goles, se llama a la funci\u00f3n <em>win<\/em> para esa porter\u00eda. Asimismo, se guarda tras cada iteraci\u00f3n la ultima se\u00f1al de los receptores l\u00e1ser para, en la siguiente vuelta del <em>loop,<\/em> comprobar si ha habido un cambio en la misma, y por tanto, un gol. Si el bot\u00f3n se ha dejado de pulsar, se llama a la funci\u00f3n de fin de juego. Por \u00faltimo, en todas las iteraciones se guarda en una variable el ultimo valor detectado en el pin del bot\u00f3n.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"235\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/HARD-1024x235.png\" alt=\"\" class=\"wp-image-8328\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/HARD-1024x235.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/HARD-300x69.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/HARD-768x176.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/HARD.png 1301w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Se presentan a continuaci\u00f3n los circuitos por separado de cada componente con el fin de hacer m\u00e1s sencilla su comprensi\u00f3n. N\u00f3tese que en el proyecto real todos forman parte de un mismo circuito completo, pues est\u00e1n todos unidos al Arduino <em>padre<\/em> salvo el contador que va al Arduino <em>hijo<\/em>. Ambos Arduinos, a su vez, est\u00e1n interconectados.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Ventiladores y bot\u00f3n<\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"688\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/boton-1024x688.png\" alt=\"\" class=\"wp-image-8346\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/boton-1024x688.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/boton-300x201.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/boton-768x516.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/boton.png 1190w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Los cuatro ventiladores se conectan, por un lado, al extremo de tierra del porta-pilas de 12V y por otro, al bot\u00f3n (cuyo extremo opuesto va al voltaje de las pilas) que cerrar\u00e1 el circuito cuando este pulsado, activ\u00e1ndolos. El bot\u00f3n a su vez se conecta al Arduino: a tierra a trav\u00e9s de una resistencia y al pin anal\u00f3gico A4 a trav\u00e9s de un potenci\u00f3metro (para salvar la diferencia de voltaje entre el porta-pilas de 12V y el pin de Arduino de 5V). El Arduino recibir\u00e1 la se\u00f1al de que el bot\u00f3n esta pulsado a trav\u00e9s de dicho pin e iniciar\u00e1 la partida. El potenci\u00f3metro, adem\u00e1s de conectar el pin con el bot\u00f3n, tiene una toma a tierra.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Marcador<\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"547\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/marcador-1024x547.png\" alt=\"\" class=\"wp-image-8347\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/marcador-1024x547.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/marcador-300x160.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/marcador-768x410.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/marcador.png 1394w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>El marcador de goles, implementado mediante el 7-segment 4-digit display, est\u00e1 conectado al Arduino <em>hijo<\/em>. Las distintas conexiones se toman de la documentaci\u00f3n de este componente. Adem\u00e1s de su uni\u00f3n a los pines digitales 2 al 9 (inclusive), cuatro de los extremos del display se unir\u00e1n a trav\u00e9s de resistencias al Arduino (pines del 10 al 13, inclusive).<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">L\u00e1seres<\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"523\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/lasers-1024x523.png\" alt=\"\" class=\"wp-image-8348\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/lasers-1024x523.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/lasers-300x153.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/lasers-768x392.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/lasers.png 1429w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Tanto los emisores como los receptores laser cuentan con tres terminaciones: una a tierra, la otra a los 5V de la placa y la restante al pin correspondiente. Los pines de los emisores (5 y 7) son de salida, pues es la placa la que les indica activarse; mientras que los de los receptores (4 y 6) son de entrada, para que la placa detecte un cambio en la detecci\u00f3n del laser cuando haya un gol. Se han utilizado dos pares emisor-receptor, uno para cada porter\u00eda.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Conexi\u00f3n entre Arduinos<\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"606\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/padrehijo-1024x606.png\" alt=\"\" class=\"wp-image-8349\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/padrehijo-1024x606.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/padrehijo-300x177.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/padrehijo-768x454.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/padrehijo.png 1273w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>La conexi\u00f3n se realiza entre los pines anal\u00f3gicos (A2, A3, A4 y A5) del Arduino <em>hijo<\/em> y los digitales (8, 9, 10 y 11) del <em>padre<\/em>. Se han necesitado cuatro conexiones: una para indicar el inicio de partida, otra para fin y dos para la puntuaci\u00f3n de cada uno de los jugadores. En todas las conexiones, es el <em>padre<\/em> quien env\u00eda una se\u00f1al al <em>hijo<\/em> indic\u00e1ndole el cambio, para que este genere las correspondientes acciones en el marcador.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">LEDs<\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"567\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/leds-1024x567.png\" alt=\"\" class=\"wp-image-8350\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/leds-1024x567.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/leds-300x166.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/leds-768x426.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/leds.png 1323w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Los LEDs que forman parte del \u00e1rea de juego utilizan solo 2 pines (2 y 12) del Arduino <em>padre<\/em>, uno para cada equipo, pues no se iluminar\u00e1n de forma individualizada si no como conjunto, haci\u00e9ndose distinci\u00f3n entre cada porter\u00eda para se\u00f1alizar el lugar del gol. Los LEDs del mismo color conforman un circuito en paralelo haciendo uso de una \u00fanica resistencia, una toma a tierra y la ya mencionada conexi\u00f3n a la placa.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Buzzer<\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"572\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/buzzer-1024x572.png\" alt=\"\" class=\"wp-image-8351\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/buzzer-1024x572.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/buzzer-300x168.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/buzzer-768x429.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/buzzer.png 1210w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>El zumbador o <em>buzzer<\/em> tiene un circuito muy simple conect\u00e1ndose por un extremo a tierra y por el otro al pin 3 de la placa para que se le env\u00eden las se\u00f1ales de emisi\u00f3n de sonido cuando as\u00ed se requiera.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">LEDs marcador<\/h5>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"966\" height=\"536\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/ledsRotos.png\" alt=\"\" class=\"wp-image-8352\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/ledsRotos.png 966w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/ledsRotos-300x166.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/ledsRotos-768x426.png 768w\" sizes=\"auto, (max-width: 966px) 100vw, 966px\" \/><\/figure>\n\n\n\n<p>Los LEDs del marcador se conectan ambos al mismo pin (13), pues se iluminar\u00e1n siempre que el bot\u00f3n este pulsado y se apagar\u00e1n cuando no lo est\u00e9. En su toma a tierra est\u00e1n conectados a una \u00fanica resistencia.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"230\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CASOS-1024x230.png\" alt=\"\" class=\"wp-image-8331\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CASOS-1024x230.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CASOS-300x67.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CASOS-768x172.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CASOS.png 1301w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Antes de ver los casos de uso del juego es necesario explicar y detallar el funcionamiento del mismo, para ello se ha desarrollado el siguiente diagrama de estados simplificado de manera que sea f\u00e1cil entender el flujo de uso de <strong>S\u00ed, Hockey<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"567\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/Si-Hockey.-Proyecto-con-Arduino-1024x567.png\" alt=\"\" class=\"wp-image-8335\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/Si-Hockey.-Proyecto-con-Arduino-1024x567.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/Si-Hockey.-Proyecto-con-Arduino-300x166.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/Si-Hockey.-Proyecto-con-Arduino-768x425.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/Si-Hockey.-Proyecto-con-Arduino-1536x851.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/Si-Hockey.-Proyecto-con-Arduino.png 1730w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Todo comienza con el sistema apagado esperando a que se pulse el bot\u00f3n de encendido. Cuando se presiona el bot\u00f3n se inician los ventiladores y se da inicio al juego, en este estado suena la melod\u00eda de comienzo y los LEDs parpadean a la vez siguiendo su ritmo, adem\u00e1s el contador tambi\u00e9n hace una animaci\u00f3n para dejar claro que el juego ha comenzado. Cuando se apagan los LEDs y acaba la m\u00fasica pasamos al estado de  \u00abJugando\u00bb en este estado se est\u00e1 comprobando continuamente cuando se marca un gol en una de las dos porter\u00edas, en el momento que un jugador marca punto suena la melod\u00eda de gol y se encienden los leds de la porter\u00eda donde se ha marcado el punto mostrando de una manera visual que ese gol ha sido efectivo, se actualiza el marcador y se pasa a revisar la puntuaci\u00f3n, en el caso de que uno de los jugadores haya marcado su tercer gol se pasa al \u00faltimo estado, el de victoria, en este estado se vuelve a mostrar de una manera lum\u00ednica que el jugador ha ganado iluminando los LEDs de su lado del campo, el contador hace un efecto de fin de juego parpadeando ambas puntuaciones y se pone a 0 volviendo al estado de comienzo de juego. <\/p>\n\n\n\n<p>Destacar que desde cualquier estado se puede apagar el sistema pulsando el bot\u00f3n de nuevo, no se ha incluido en el diagrama ya que pod\u00eda quedar confuso al tener que a\u00f1adir muchas conexiones.<\/p>\n\n\n\n<p>En resumen, los casos de uso son:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Encender sistema<\/strong>: el usuario enciende el juego presionando el bot\u00f3n.<\/li>\n\n\n\n<li><strong>Iniciar juego<\/strong>: Una vez encendido el sistema, se inicia el juego autom\u00e1ticamente, con la melod\u00eda de inicio, parpadeo de LEDs y animaci\u00f3n del contador.<\/li>\n\n\n\n<li><strong>Jugar<\/strong>: Los jugadores interact\u00faan marcando goles en las porter\u00edas. El sistema detecta cuando se marca un gol, reproduce la melod\u00eda correspondiente, enciende los LEDs de la porter\u00eda correspondiente, actualiza el marcador y verifica si alg\u00fan jugador ha alcanzado tres goles.<\/li>\n\n\n\n<li><strong>Finalizar juego por victoria<\/strong>: Si un jugador alcanza tres goles, el sistema entra en el estado de victoria. Se muestran efectos lum\u00ednicos indicando el ganador, se realiza un efecto visual en el contador y se reinicia el marcador, volviendo al estado inicial.<\/li>\n\n\n\n<li><strong>Apagar sistema<\/strong>: El usuario apaga el sistema, deteniendo la actividad del juego y apagando los componentes.<\/li>\n<\/ul>\n\n\n\n<p>Por \u00faltimo, en esta secci\u00f3n se presenta un v\u00eddeo demostraci\u00f3n de una partida de <strong>S\u00ed, Hockey<\/strong>.<\/p>\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=\"S\u00ed, Hockey.\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/6mt5baoZ3G4?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<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"216\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/PROB-1024x216.png\" alt=\"\" class=\"wp-image-8330\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/PROB-1024x216.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/PROB-300x63.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/PROB-768x162.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/PROB.png 1301w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Durante el desarrollo de este proyecto, nos hemos encontrado muchos y diversos inconvenientes que han derivado en dedicarle m\u00e1s horas de las esperadas y en cambios de \u00faltima hora.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Falta de pines<\/h5>\n\n\n\n<p>El principal problema del proyecto fue la falta de pines en la placa Arduino, pues eran muchos los necesarios para conectar todo, m\u00e1s a\u00fan teniendo en cuenta que solo el marcador (4-digit 7-segment display) utiliza 12 pines digitales. Por ello, se opt\u00f3 por utilizar un multiplexor, un registro de desplazamiento o un Arduino \u201cmega\u201d, de m\u00e1s pines; pero estas opciones fueron descartadas. Aprovechando la disponibilidad de una placa Arduino que uno de nosotros ten\u00eda, decidimos utilizar dos placas interconectadas para duplicar los pines.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Comunicaci\u00f3n entre Arduinos<\/h5>\n\n\n\n<p>La soluci\u00f3n al problema anterior trajo consigo un nuevo inconveniente: la comunicaci\u00f3n entre las dos placas. Tras investigar mucho sobre ello, se asent\u00f3 la idea de utilizar uno de \u201cesclavo\u201d, en nuestro caso, \u201chijo\u201d; y otro principal, \u201cpadre\u201d. Tras probar todas las conexiones posibles, se dio con la combinaci\u00f3n m\u00e1s adecuada: usar los anal\u00f3gicos del Arduino hijo (pues sus digitales estaban ocupadas por el marcador) y los digitales del Arduino padre (mas sencillos de utilizar en c\u00f3digo).<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Bot\u00f3n de inicio<\/h5>\n\n\n\n<p>Otro de los problemas fue el uso de un mismo bot\u00f3n para conectar el circuito de los ventiladores (alimentados por una pila de 12V) y el circuito de los Arduinos (cuyos pines no soportan m\u00e1s de 5V). Para solventarlo sin que el voltaje de la pila afecte al Arduino, se utiliz\u00f3 un potenci\u00f3metro para regular la corriente que pasa.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Alimentaci\u00f3n<\/h5>\n\n\n\n<p>La alimentaci\u00f3n tanto de los ventiladores como de las placas Arduino supuso otro problema. Los ventiladores hac\u00edan uso de un porta-pilas de ocho bater\u00edas de 1.5V cada una que, llegado un punto del proceso, dejaron de funcionar. Para solucionarlo, tuvimos que comprar nuevas pilas y reemplazar a las anteriores, que solo con el montaje ya se hab\u00edan consumido.<\/p>\n\n\n\n<p>Por su parte, la placa Arduino no se pod\u00eda alimentar con la pila de 9V por ser insuficiente para todos los componentes. Adem\u00e1s, la necesidad de enchufar las dos placas simult\u00e1neamente oblig\u00f3 a buscar otra fuente de alimentaci\u00f3n. Tras varios quebraderos de cabeza barajando la posibilidad de conectarlo a la corriente el\u00e9ctrica, dimos con la soluci\u00f3n: una bater\u00eda port\u00e1til (<em>powerbank<\/em>). Para ello, compramos un cable USB para la placa Arduino extra y conectamos ambas a esta fuente de alimentaci\u00f3n, consiguiendo el voltaje necesario.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Problemas de carpinter\u00eda<\/h5>\n\n\n\n<p>En cuesti\u00f3n de montaje, la elecci\u00f3n de materiales fue un problema. En primer lugar, la elecci\u00f3n entre usar cart\u00f3n (m\u00e1s manejable y barato) o contrachapado (m\u00e1s resistente y estable) acab\u00f3 en utilizar ambos. Por un lado, la estructura general con contrachapado (lo que conllev\u00f3 mayor trabajo de atornillado y taladrado) y los otros componentes (porter\u00edas y estructura del marcador) en cart\u00f3n.<\/p>\n\n\n\n<p>Por otro lado, hacerse con la placa de metacrilato supuso un problema ya que no pod\u00edan cortarla a nuestra medida, por no hablar de agujerearla. Nos vimos finalmente obligados a devolver la placa inicialmente comprada, y pedir una espec\u00edficamente hecha a nuestro dise\u00f1o, mucho m\u00e1s cara.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Problemas menores<\/h5>\n\n\n\n<p>De manera adicional, surgieron otros inconvenientes. El dise\u00f1o inicial planteado para dos ventiladores se qued\u00f3 corto en comparaci\u00f3n con la necesidad de aire para el deslizamiento del disco, por lo que tuvimos que ampliarlo a cuatro ventiladores. Adem\u00e1s, los emisores laser fallaban constantemente, ya que, si no estaban directamente apuntando a los receptores, no se detectaba el obst\u00e1culo (disco al pasar simulando el gol); solventar esto llev\u00f3 mucho tiempo e intentos.<\/p>\n\n\n\n<p>A esto se sum\u00f3 que el circuito de los LEDs del marcador, destinados a indicar qu\u00e9 n\u00famero correspond\u00eda a qu\u00e9 jugador seg\u00fan el color, fall\u00f3. Despu\u00e9s de numerosos intentos por arreglarlo, result\u00f3 imposible dado que el problema resid\u00eda en uno de los empalmes de su circuito, inaccesibles llegado un punto del desarrollo del proyecto. A pesar de ello, se mantuvieron, precisamente porque retirarlos supon\u00eda deshacer parte de la estructura.<\/p>\n\n\n\n<p>Por \u00faltimo, aunque inicialmente busc\u00e1bamos evitar soldar los empalmes, la inconsistencia de estos (unidos con cinta adhesiva), especialmente los que se conectaban a los l\u00e1seres (m\u00e1s inestables), puso de manifiesto la necesidad de soldar. Debido a la inexperiencia del equipo con el soldado y la dificultad que supon\u00eda, solo los empalmes m\u00e1s inestables (l\u00e1seres) o primordiales (ventiladores) fueron soldados.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"216\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CONC-1024x216.png\" alt=\"\" class=\"wp-image-8332\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CONC-1024x216.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CONC-300x63.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CONC-768x162.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/04\/CONC.png 1301w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>A modo de conclusi\u00f3n, podemos decir que hemos logrado cumplir con los objetivos establecidos en un primer momento. Se ha conseguido dise\u00f1ar montar un sistema empotrado funcional que cumple con los requisitos que se ped\u00edan. Adem\u00e1s, se cuenta con un dise\u00f1o robusto y fiel en cuanto a hardware y flexible y abierto a futuros escenarios en cuanto a software, por ejemplo, para desarrollos futuros sin necesidad de modificar el hardware se podr\u00edan a\u00f1adir diferentes modos de juego y efectos de sonido o luz que hubi\u00e9ramos a\u00f1adido de no ser por la falta de tiempo, pero que tendremos en cuenta para pr\u00f3ximas actualizaciones.<\/p>\n\n\n\n<p>Por otra parte, se ha conseguido un buen resultado favoreciendo y fortaleciendo conocimientos de la asignatura. Adem\u00e1s, cabe destacar que ninguno de los cuatro integrantes hab\u00edamos hecho proyectos de tan gran nivel con Arduino, siendo de gran satisfacci\u00f3n el haber logrado el montaje de un sistema empotrado que funciona a tiempo real con la interacci\u00f3n del usuario. Esta satisfacci\u00f3n es a\u00fan mayor teniendo en cuenta que se han empleado cerca de 70 horas en finalizar el proyecto en su totalidad, contando fases de carpinter\u00eda, testeo y montaje de circuitos y desarrollo completo del c\u00f3digo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>GRUPO 2 Formado por los integrantes: Este proyecto llamado S\u00ed, Hockey, se trata del montaje de una mesa de Air Hockey completamente funcional. La idea principal del proyecto era la construcci\u00f3n de un tablero&#46;&#46;&#46;<\/p>\n","protected":false},"author":223,"featured_media":8616,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-8236","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.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>S\u00ed, Hockey. - Proyectos con Arduino.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"S\u00ed, Hockey. - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"GRUPO 2 Formado por los integrantes: Este proyecto llamado S\u00ed, Hockey, se trata del montaje de una mesa de Air Hockey completamente funcional. La idea principal del proyecto era la construcci\u00f3n de un tablero&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-06T18:28:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-06T18:31:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-1-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"2560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"dsemo2324g02\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"dsemo2324g02\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"28 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\\\/si-hockey\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/\"},\"author\":{\"name\":\"dsemo2324g02\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/1d4e0f511ccb06872fb7e2765ec07c54\"},\"headline\":\"S\u00ed, Hockey.\",\"datePublished\":\"2024-05-06T18:28:26+00:00\",\"dateModified\":\"2024-05-06T18:31:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/\"},\"wordCount\":4145,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2024\\\/05\\\/terreno-de-juego-1-scaled.jpg\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/\",\"name\":\"S\u00ed, Hockey. - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2024\\\/05\\\/terreno-de-juego-1-scaled.jpg\",\"datePublished\":\"2024-05-06T18:28:26+00:00\",\"dateModified\":\"2024-05-06T18:31:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2024\\\/05\\\/terreno-de-juego-1-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2024\\\/05\\\/terreno-de-juego-1-scaled.jpg\",\"width\":1920,\"height\":2560},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/si-hockey\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"S\u00ed, Hockey.\"}]},{\"@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\\\/1d4e0f511ccb06872fb7e2765ec07c54\",\"name\":\"dsemo2324g02\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e16bd1dc339f7ddb2648a04108b1ea55b1706152aac970aff7c0a99269a096a2?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e16bd1dc339f7ddb2648a04108b1ea55b1706152aac970aff7c0a99269a096a2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e16bd1dc339f7ddb2648a04108b1ea55b1706152aac970aff7c0a99269a096a2?s=96&d=mm&r=g\",\"caption\":\"dsemo2324g02\"},\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/dsemo2324g02\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"S\u00ed, Hockey. - Proyectos con Arduino.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/","og_locale":"es_ES","og_type":"article","og_title":"S\u00ed, Hockey. - Proyectos con Arduino.","og_description":"GRUPO 2 Formado por los integrantes: Este proyecto llamado S\u00ed, Hockey, se trata del montaje de una mesa de Air Hockey completamente funcional. La idea principal del proyecto era la construcci\u00f3n de un tablero&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2024-05-06T18:28:26+00:00","article_modified_time":"2024-05-06T18:31:32+00:00","og_image":[{"width":1920,"height":2560,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-1-scaled.jpg","type":"image\/jpeg"}],"author":"dsemo2324g02","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"dsemo2324g02","Tiempo de lectura":"28 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/"},"author":{"name":"dsemo2324g02","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/1d4e0f511ccb06872fb7e2765ec07c54"},"headline":"S\u00ed, Hockey.","datePublished":"2024-05-06T18:28:26+00:00","dateModified":"2024-05-06T18:31:32+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/"},"wordCount":4145,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-1-scaled.jpg","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/","name":"S\u00ed, Hockey. - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-1-scaled.jpg","datePublished":"2024-05-06T18:28:26+00:00","dateModified":"2024-05-06T18:31:32+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-1-scaled.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/05\/terreno-de-juego-1-scaled.jpg","width":1920,"height":2560},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/si-hockey\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"S\u00ed, Hockey."}]},{"@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\/1d4e0f511ccb06872fb7e2765ec07c54","name":"dsemo2324g02","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/e16bd1dc339f7ddb2648a04108b1ea55b1706152aac970aff7c0a99269a096a2?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e16bd1dc339f7ddb2648a04108b1ea55b1706152aac970aff7c0a99269a096a2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e16bd1dc339f7ddb2648a04108b1ea55b1706152aac970aff7c0a99269a096a2?s=96&d=mm&r=g","caption":"dsemo2324g02"},"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/dsemo2324g02\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/8236","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\/223"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=8236"}],"version-history":[{"count":40,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/8236\/revisions"}],"predecessor-version":[{"id":8580,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/8236\/revisions\/8580"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/8616"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=8236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=8236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=8236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}