{"id":6537,"date":"2023-05-05T19:36:53","date_gmt":"2023-05-05T17:36:53","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=6537"},"modified":"2023-05-05T19:36:55","modified_gmt":"2023-05-05T17:36:55","slug":"maquina-de-reflejos","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/","title":{"rendered":"M\u00e1quina de Reflejos"},"content":{"rendered":"\n<p class=\"has-vivid-green-cyan-color has-text-color has-large-font-size\"><strong>Introducci\u00f3n<\/strong><\/p>\n\n\n\n<p>SEyTR_Mo_G2_2022-23 hemos creado una m\u00e1quina de reflejos cuyo objetivo principal era crear un juego de reflejos con luces, d\u00f3nde se trabaje la velocidad de reacci\u00f3n. Este tipo de juegos son empleados por deportistas de \u00e9lite tales como futbolistas o pilotos de F\u00f3rmula 1. Aunque tambi\u00e9n se puede usar como entretenimiento a la vez que mejoramos cualidades como la concentraci\u00f3n, coordinaci\u00f3n\u2026<\/p>\n\n\n\n<p>Esta m\u00e1quina de reflejos cuenta con una serie de \u201cm\u00f3dulos\u201d que est\u00e1n integrados por un sensor ultrasonido y 4 diodos leds, adem\u00e1s encontramos un zumbador que realiza diferentes tipos de pitidos en funci\u00f3n del momento (inicio de la partida, final, acierto, fallo, cambiar par\u00e1metros de la partida como el tiempo\u2026), una pantalla LCD que hace de display por la cual sale toda la informaci\u00f3n del juego y un sensor infrarrojos para controlar el juego con un mando IRremote sin necesidad de controlarlo desde el pc.<\/p>\n\n\n\n<p>En los siguientes apartados describiremos cada una de las partes del proyecto m\u00e1s a fondo.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\">________________________________________<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-large-font-size\"><strong>Idea inicial<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"779\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/adf-1024x779.jpg\" alt=\"\" class=\"wp-image-6538\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/adf-1024x779.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/adf-300x228.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/adf-768x584.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/adf.jpg 1205w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>En la idea original, el proyecto iba a ontar con 8 m\u00f3dulos, formados por 4 leds en serie y un ultrasonidos. Adem\u00e1s de un Arduino uno, un decodificador 3 a 8 y un multiplexor con las mismas se\u00f1ales de selecci\u00f3n, y una resistencia final para proteger a todos los m\u00f3dulos del circuito. A continuaci\u00f3n veremos las dificultades encontradas y la evoluci\u00f3n del proyecto con las soluciones a las cuales hemos llegado.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\">________________________________________<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-large-font-size\"><strong>Software (C\u00f3digo)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;IRremote.h&gt;\n#include &lt;TimerFreeTone.h&gt;\n#include &lt;Wire.h&gt;\n#include &lt;LiquidCrystal_I2C.h&gt;\n\n#define TRIGGER 2\u00a0\u00a0 \/\/Pin digital 2 para el Trigger del sensor\n#define ECHO A0\n#define ECHO2 A1\n#define ECHO3 A2\n#define ECHO4 A3\n#define ECHO5 3\n#define ECHO6 4\n\n#define IR_PIN 7\n#define PITIDO_INICIAL 0\n#define PITIDO_CORRECTO 1\n#define PITIDO_FALLO 2\n#define PITIDO_SUBIR 3\n#define PITIDO_BAJAR 4\n\nint vcc1 = 10;\nint vcc2 = 11;\nint vcc3 = 12;\nint vcc4 = 13;\nint vcc5 = 9;\nint vcc6 = 8;\nint val;\nint echo;\nint buzzPin = 5;\n\nIRrecv irrecv(IR_PIN);\ndecode_results results;\nunsigned long keyValue = 0;\nint n;\nunsigned long gameTime = 20000;\nunsigned long moduleTime = 3000;\nint multiplicator = 1;\n\nLiquidCrystal_I2C lcd(0x26,16,2);\n\n\nvoid setup() {\n\n\u00a0 pinMode(TRIGGER, OUTPUT); \/\/pin como salida\n\u00a0 pinMode(vcc2, OUTPUT);\n\u00a0 pinMode(vcc3, OUTPUT);\n\u00a0 pinMode(vcc1, OUTPUT);\n\u00a0 pinMode(vcc4, OUTPUT);\n\u00a0 pinMode(vcc5, OUTPUT);\n\u00a0 pinMode(vcc6, OUTPUT);\n\u00a0 pinMode(ECHO, INPUT);\n\u00a0 pinMode(ECHO2, INPUT);\n\u00a0 pinMode(ECHO3, INPUT);\n\u00a0 pinMode(ECHO4, INPUT);\n\u00a0 pinMode(ECHO5, INPUT);\n\u00a0 pinMode(ECHO6, INPUT);\n\u00a0 pinMode(buzzPin, OUTPUT);\n\n\u00a0 irrecv.enableIRIn();\n\n\u00a0\/\/ Serial.begin(9600);\/\/iniciailzamos la comunicaci\u00f3n\n\n  lcd.init();\n\u00a0 lcd.backlight();\n\u00a0 lcd.clear();\n\u00a0 lcd.setCursor(2,0);\n\u00a0 lcd.print(\"BIENVENIDO: \");\n\u00a0 lcd.setCursor(4,1);\n\u00a0 lcd.print(\"EL NANO \");\n\n\u00a0 randomSeed(analogRead(0));\n}\n\n\n\nvoid loop() {\n\n\u00a0 if (irrecv.decode(&amp;results)) {\n\u00a0\u00a0\u00a0 if (results.value == 0XFFFFFFFF) {results.value = keyValue;}\n\u00a0\u00a0\u00a0 \/\/Serial.println(results.value, HEX);\n\u00a0\u00a0\u00a0 if (results.value == 0x460523B) { \/\/ POWER\n\u00a0\u00a0\u00a0\u00a0\u00a0 int puntuacion = juego();\n\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.clear();\n\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,0);\n\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Puntuacion: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(puntuacion);\n\u00a0\u00a0\u00a0 } else if (results.value == 0x6C6AA223) { \/\/ PLUSVOL\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (gameTime &lt; 60000) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 buzz(PITIDO_SUBIR);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 gameTime = gameTime + 5000;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.clear();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,0);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Time: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(gameTime \/ 1000);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 delay(500);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0 } else if (results.value == 0xFDF07FE0) { \/\/ MINUSVOL\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (gameTime &gt; 10000) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 buzz(PITIDO_BAJAR);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 gameTime = gameTime - 5000;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.clear();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,0);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Time: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(gameTime \/ 1000);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 delay(500);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0 } else if (results.value == 0x303188DF) { \/\/ PLUSCH\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if ((moduleTime &lt; gameTime) &amp;&amp; (moduleTime &lt; 500)){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 buzz(PITIDO_SUBIR);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 moduleTime += 100;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 } else if ((moduleTime &lt; gameTime) &amp;&amp; (moduleTime &gt;= 500)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 buzz(PITIDO_SUBIR);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 moduleTime += 500;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.clear();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,0);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Delay: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print((float)moduleTime \/ 1000.0);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 delay(500);\n\u00a0\u00a0\u00a0 } else if (results.value == 0x8ED6B32A) { \/\/ MINUSCH\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ((moduleTime &gt; 100) &amp;&amp; (moduleTime &lt;= 500)){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 buzz(PITIDO_BAJAR);\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 moduleTime -= 100;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 } else if ((moduleTime &gt; 100) &amp;&amp; (moduleTime &gt; 500)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 buzz(PITIDO_BAJAR);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 moduleTime -= 500;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.clear();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,0);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Delay: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(((float)moduleTime \/ 1000.0));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 delay(500);\n \u00a0\u00a0 } else if (results.value == 0xDC82D446) { \/\/ ONE: Modo principiante\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0gameTime = 40000;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 moduleTime = 10000;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 buzz(PITIDO_SUBIR);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.clear();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,0);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Time: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(gameTime \/ 1000);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Delay: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(((float)moduleTime \/ 1000.0));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0 } else if (results.value == 0x6B7A82B7) { \/\/ TWO: Modo f\u00e1cil\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 gameTime = 40000;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 moduleTime = 5000;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 buzz(PITIDO_SUBIR);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.clear();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,0);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Time: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(gameTime \/ 1000);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Delay: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(((float)moduleTime \/ 1000.0));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\n\u00a0\u00a0\u00a0 } else if (results.value == 0x496E52EA) { \/\/ THREE: Modo medio\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 gameTime = 40000;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 moduleTime = 500;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 buzz(PITIDO_SUBIR);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.clear();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,0);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Time: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(gameTime \/ 1000);\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Delay: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(((float)moduleTime \/ 1000.0));\n  \u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\n\u00a0\u00a0\u00a0 } else if (results.value == 0x24B1BD49) { \/\/ FOUR: Modo medio\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 buzz(PITIDO_SUBIR);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.clear();\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,0);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Time: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(gameTime \/ 1000);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.setCursor(0,1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"Delay: \");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(((float)moduleTime \/ 1000.0));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lcd.print(\"s\");\n\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0 \/\/Serial.println(\"He salido del switch\");\n\n\u00a0\u00a0\u00a0 results.value = keyValue;\n\n\u00a0\u00a0\u00a0 irrecv.resume();\n\u00a0 }\n\n}\n\n\n\nvoid\u00a0 buzz(int value) {\n\u00a0 if(value == PITIDO_INICIAL){\n\u00a0\u00a0\u00a0 TimerFreeTone(buzzPin,500,500);\n\u00a0\u00a0\u00a0 delay(300);\n\u00a0\u00a0\u00a0 TimerFreeTone(buzzPin,500,500);\n\u00a0\u00a0\u00a0 delay(300);\n\u00a0\u00a0\u00a0 TimerFreeTone(buzzPin,2000,1000);\n\u00a0 }\n\u00a0 else if(value == PITIDO_CORRECTO){\n\u00a0\u00a0\u00a0 TimerFreeTone(buzzPin,3000,200);\n\u00a0\u00a0\u00a0 delay(100);\n\u00a0\u00a0\u00a0 TimerFreeTone(buzzPin,3000,200);\n\u00a0 }\n\u00a0 else if(value == PITIDO_FALLO){\n\u00a0\u00a0\u00a0 TimerFreeTone(buzzPin, 500, 500);\n\u00a0 }\n\u00a0 else if (value == PITIDO_SUBIR){\n\u00a0\u00a0\u00a0 TimerFreeTone(buzzPin, 1000, 100);\n\u00a0 }\n\u00a0 else if (value == PITIDO_BAJAR){\n\u00a0\u00a0\u00a0 TimerFreeTone(buzzPin, 500, 100);\n\u00a0 }\n}\n\n\n\nvoid selectOutput(int value) {\n\u00a0 n = random(0, 6);\n\u00a0 buzz(value);\n\u00a0 if(n == 0){\n\u00a0\u00a0\u00a0\u00a0\u00a0 val = vcc1;\n\u00a0\u00a0\u00a0\u00a0\u00a0 echo = ECHO;\n\u00a0 }else if(n == 1){\n\u00a0\u00a0\u00a0 val = vcc2;\n\u00a0\u00a0\u00a0 echo = ECHO2;\u00a0\u00a0\u00a0\n\u00a0 }else if(n == 2){\n\u00a0\u00a0\u00a0\u00a0\u00a0 val = vcc3;\n\u00a0\u00a0\u00a0\u00a0\u00a0 echo = ECHO3;\n\u00a0 }else if(n==3){\n\u00a0\u00a0\u00a0 val = vcc4;\n\u00a0\u00a0\u00a0 echo = ECHO4;\n\u00a0 }else if(n==4){\n\u00a0\u00a0\u00a0\u00a0\u00a0 val = vcc5;\n\u00a0\u00a0\u00a0\u00a0\u00a0 echo = ECHO5;\n\u00a0 }else if(n==5){\n\u00a0\u00a0\u00a0\u00a0\u00a0 val = vcc6;\n\u00a0\u00a0\u00a0\u00a0\u00a0 echo = ECHO6;\n\u00a0 }\n}\n\n\n\nint juego() {\n\u00a0 int score = 0;\n\u00a0 selectOutput(PITIDO_INICIAL);\n\u00a0 unsigned long start = millis();\n\u00a0 unsigned long current;\n\u00a0 unsigned long startTimeModule = millis();\n\n\n\u00a0 for(;;) {\n\u00a0\u00a0\u00a0 current = millis();\n\u00a0\u00a0\u00a0 if (current - start &gt;= gameTime) break;\n\u00a0\u00a0\u00a0 digitalWrite(val, HIGH);\n\u00a0\u00a0\u00a0 digitalWrite(TRIGGER, LOW);\/\/Inicializamos el pin con 0\n\u00a0\u00a0\u00a0 delayMicroseconds(5);\n\u00a0\u00a0\u00a0 digitalWrite(TRIGGER, HIGH);\n\u00a0\u00a0\u00a0 delayMicroseconds(10);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Enviamos un pulso de 10us\n\u00a0\u00a0\u00a0 digitalWrite(TRIGGER, LOW);\n\n\n\u00a0\u00a0\u00a0 long t; \/\/tiempo que demora en llegar el echo\n\u00a0\u00a0\u00a0 long d; \/\/distancia en centimetros\n\n\u00a0\u00a0\u00a0 t = pulseIn(echo, HIGH); \/\/obtenemos el ancho del pulso\n\u00a0\u00a0\u00a0 d = t\/59;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/escalamos el tiempo a una distancia en cm\n\n\u00a0\u00a0\u00a0 lcd.clear();\n\u00a0\u00a0\u00a0 lcd.setCursor(0, 0);\n\u00a0\u00a0\u00a0 lcd.print(\"Tiempo: \");\n\u00a0\u00a0\u00a0 lcd.setCursor(8, 0);\n\u00a0\u00a0\u00a0 lcd.print((gameTime -(current - start)) \/ 1000);\n\u00a0\u00a0\u00a0 lcd.setCursor(0, 1);\n\u00a0\u00a0\u00a0 lcd.print(\"Puntos: \");\n\u00a0\u00a0\u00a0 lcd.setCursor(8, 1);\n\u00a0\u00a0\u00a0 lcd.print(score);\n\n\u00a0\u00a0\u00a0 if (d &lt; 10 &amp;&amp; d &gt; 1) {\n\u00a0\u00a0\u00a0\u00a0\u00a0 score++;\n\u00a0\u00a0\u00a0\u00a0\u00a0 digitalWrite(val,LOW);\n\u00a0\u00a0\u00a0\u00a0\u00a0 selectOutput(PITIDO_CORRECTO);\n\u00a0\u00a0\u00a0\u00a0\u00a0 delayMicroseconds(500);\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0 startTimeModule = millis();\n\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0 else if (current\u00a0 - startTimeModule &gt;= moduleTime) {\n\u00a0\u00a0\u00a0\u00a0\u00a0 digitalWrite(val,LOW);\n\u00a0\u00a0\u00a0\u00a0\u00a0 selectOutput(PITIDO_FALLO);\n\u00a0\u00a0\u00a0\u00a0\u00a0 delayMicroseconds(500);\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0 startTimeModule = millis();\n\u00a0\u00a0\u00a0 }\n\u00a0 }\n\u00a0\u00a0\u00a0 digitalWrite(val, LOW);\n\n\u00a0\u00a0\u00a0 lcd.clear();\n\u00a0\u00a0\u00a0 lcd.setCursor(6,0);\n\u00a0\u00a0\u00a0 lcd.print(\"FIN\");\n\u00a0\u00a0\u00a0 buzz(PITIDO_INICIAL);\n\n\u00a0\u00a0\u00a0 return score;\n\n}<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-center\">________________________________________<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-large-font-size\"><strong>Material para su construcci\u00f3n<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"857\" height=\"470\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-2.png\" alt=\"\" class=\"wp-image-6540\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-2.png 857w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-2-300x165.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-2-768x421.png 768w\" sizes=\"auto, (max-width: 857px) 100vw, 857px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\">________________________________________<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-large-font-size\"><strong>Casos de uso<\/strong><\/p>\n\n\n\n<p>A continuaci\u00f3n, expondremos los casos de uso de la m\u00e1quina de reflejos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Empezar partida<\/strong>: al pulsar el bot\u00f3n power del mando, se iniciar\u00e1 la partida con los datos de tiempo y delay que tenga establecidos.<\/li>\n\n\n\n<li><strong>Seleccionar modo de juego<\/strong>: con los botones 1-4 del mando, tenemos distintos modos de juego con tuplas tiempo-delay prestablecidas en orden creciente de dificultad, siendo el 1 el m\u00e1s sencillo y el 4 el m\u00e1s complejo.<\/li>\n\n\n\n<li><strong>Subir tiempo de juego<\/strong>: con el bot\u00f3n de subir volumen del mando, aumenta el tiempo de juego en 5 en 5 segundos, hasta un m\u00e1ximo de 1 minuto.<\/li>\n\n\n\n<li><strong>Bajar tiempo de juego<\/strong>: del mismo modo, con el bot\u00f3n de bajar volumen del mando, bajar\u00e1 el tiempo de 5 en 5 segundos hasta un m\u00ednimo de 10 segundos.<\/li>\n\n\n\n<li><strong>Subir delay de los sensores<\/strong>: con el bot\u00f3n de subir de canal aumenta el delay de 0,5 en 0,5 segundos hasta un m\u00e1ximo de 5 segundos. Tiene la particularidad que, si el delay es menor de 0,5 segundos, aumenta de 0,1 en 0,1 hasta que alcanza los 0,5 segundos que es cuando empieza a subir de nuevo de 0,5 en 0,5 segundos.<\/li>\n\n\n\n<li><strong>Bajar delay de los sensores<\/strong>: con el bot\u00f3n de bajar de canal disminuimos el delay de 0,5 en 0,5 segundos hasta los 0,5 segundos, a partir de entonces baja de 0,1 en 0,1 hasta un m\u00ednimo de 0,1 segundos de delay.<\/li>\n<\/ul>\n\n\n\n<p>Anotaciones: todo el juego se controla por el mando IRremote. Con cada caso de uso el buzzer emite un pitido para indicar que se ha producido el cambio, del mismo modo que se muestra por la pantalla LCD.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\">________________________________________<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-large-font-size\"><strong>Problemas y soluciones de la parte f\u00edsica<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tuvimos problemas en primer lugar con las p\u00e9rdidas generadas por el multiplexor y decodificador, que daba lugar a que el echo no se recibiera de manera correcta desde los ultrasonidos. &nbsp;Como soluci\u00f3n decidimos retirar tanto el multiplexor como el decodificador, no solo por las p\u00e9rdidas que generaban, sino porque tambi\u00e9n las especificaciones de estos eran particulares tales como enable negado, salidas del deco todas a high menos una low (cuando nos interesaba que fuera al rev\u00e9s). Para solucionar esto \u00faltimo empleamos puertas NAND como si fuesen NOT, lo cual generaba mayores p\u00e9rdidas en el circuito.<\/li>\n\n\n\n<li>En segundo lugar, tuvimos problemas al probar el prototipo montado en las protoboards, porque muchos cables no hac\u00edan bien contacto y daba lugar a peque\u00f1os fallos, o incluso llegamos a tener p\u00e9rdidas de tiempo con los triggers, conectando dos puntos el\u00e9ctricos con un cable de 3 cm. La soluci\u00f3n de esto fue conectar todos los triggers en el mismo punto el\u00e9ctrico de la protoboard (el positivo del lado en el cu\u00e1l entraban todos los triggers sin problema).<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A la hora de soldar los cables de los diodos, intentamos a\u00f1adir un recubrimiento aplicando calor, para evitar contactos indeseados entre positivos y negativos, lo cual gener\u00f3 que uno de los m\u00f3dulos se deformara ligeramente uno de los m\u00f3dulos. La soluci\u00f3n a ello fue aplicar en su lugar cinta aislante.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Al implementar la pantalla LCD con el m\u00f3dulo I2C, ten\u00edamos problemas, porque ten\u00edamos en los pines anal\u00f3gicos 4 y 5 ocupados, y el protocolo I2C busca en estos pines tambi\u00e9n las entradas SDA y SDL, porque no todos los arduinos disponen de estos pines. Hasta que encontramos toda la documentaci\u00f3n y cambiamos ambos pines a digitales, dejando estos dos libres. Este problema ten\u00eda tambi\u00e9n una soluci\u00f3n software cambiando la configuraci\u00f3n del protocolo, pero decidimos que era m\u00e1s sencillo cambiar la disposici\u00f3n de 2 pines y m\u00e1s teniendo pines digitales libres en el Arduino.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La idea inicial era poner los 4 diodos en serie, pero la ca\u00edda de voltaje era muy grande y no llegaba suficiente alimentaci\u00f3n al ultrasonido para su correcto funcionamiento, por lo que tuvimos que modificar nuestra idea original y ponerlos en paralelo.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\">________________________________________<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-large-font-size\"><strong>Problemas y soluciones de la parte software<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cuando implementamos el sensor de infrarrojos en el circuito para controlarlo con el mando, despu\u00e9s de realizar 1 juego, el sensor IRremote cog\u00eda valores aleatorios y muy distintos a cada frecuencia recibida. Despu\u00e9s de probar quitando las ultimas piezas recibidas detectamos que era el buzzer aunque sin ning\u00fan tipo de explicaci\u00f3n aparente. Finalmente, era por el uso de la biblioteca predefinida para el uso del buzzer, ya que esta modificaba las frecuencias de los relojes del arduino que compart\u00eda con el IRremote, descuadrando el protocolo NEC que este segu\u00eda y hac\u00eda imposible que recibiera las se\u00f1ales completamente. Para solucionar este problema, decidimos cambiar la librer\u00eda que us\u00e1bamos de buzzer por otra librer\u00eda BuzzerFreeTone, import\u00e1ndola de fuera de la librer\u00eda de dependencias proporcionada por el IDE de Arduino.<\/li>\n<\/ul>\n\n\n\n<p>A nivel software tuvimos pocos problemas en general, salvo la excepci\u00f3n del uso de la librer\u00eda BuzzerFreeTone, no tuvimos mayores complicaciones, debido principalmente, a que la mayor parte de la complejidad de este proyecto era hardware y no software.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\">________________________________________<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-large-font-size\"><strong>Posibles mejoras<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Proteger la parte trasera del tabl\u00f3n d\u00f3nde se encuentra todo el cableado, de manera que quede m\u00e1s protegido y sea m\u00e1s seguro a la hora de transportarlo.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crear una scoreboard, d\u00f3nde se muestren los r\u00e9cords hist\u00f3ricos en cada modo de juego.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Implementar una segunda pantalla, para mostrar mayor cantidad de detalles, as\u00ed como la posible scoreboard implementada.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Implementar otros modos de juego, d\u00f3nde por ejemplo haya una secuencia de luces y a continuaci\u00f3n se enciendan todas las luces y tengas que ir apag\u00e1ndolas en el mismo orden que la secuencia. Del mismo modo aqu\u00ed se pueden sacar varios niveles de dificultad, tanto por la rapidez del delay en la secuencia como por el n\u00famero de luces en cada secuencia.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Implementar alg\u00fan tipo de pitido especial o mini canci\u00f3n con el buzzer en caso de realizar el r\u00e9cord en alg\u00fan modo de juego.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\">________________________________________<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-large-font-size\"><strong>V\u00eddeo del funcionamiento del proyecto<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-3.png\" alt=\"\" class=\"wp-image-6541\" width=\"309\" height=\"547\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-3.png 390w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-3-169x300.png 169w\" sizes=\"auto, (max-width: 309px) 100vw, 309px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\">________________________________________<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-large-font-size\"><strong>Fotograf\u00edas del proyecto ensamblado<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"884\" height=\"663\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-4.png\" alt=\"\" class=\"wp-image-6542\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-4.png 884w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-4-300x225.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-4-768x576.png 768w\" sizes=\"auto, (max-width: 884px) 100vw, 884px\" \/><\/figure>\n<\/div>\n\n\n<p>Dejamos un par de m\u00f3dulos al aire libre para que se viera todos los componentes dentro del m\u00f3dulo, as\u00ed como el cableado de este.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-5.png\" alt=\"\" class=\"wp-image-6544\" width=\"620\" height=\"465\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-5.png 884w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-5-300x225.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-5-768x576.png 768w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n SEyTR_Mo_G2_2022-23 hemos creado una m\u00e1quina de reflejos cuyo objetivo principal era crear un juego de reflejos con luces, d\u00f3nde se trabaje la velocidad de reacci\u00f3n. Este tipo de juegos son empleados por deportistas&#46;&#46;&#46;<\/p>\n","protected":false},"author":8,"featured_media":6558,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6537","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.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>M\u00e1quina de Reflejos - 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\/maquina-de-reflejos\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"M\u00e1quina de Reflejos - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Introducci\u00f3n SEyTR_Mo_G2_2022-23 hemos creado una m\u00e1quina de reflejos cuyo objetivo principal era crear un juego de reflejos con luces, d\u00f3nde se trabaje la velocidad de reacci\u00f3n. Este tipo de juegos son empleados por deportistas&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-05T17:36:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-05T17:36:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/imagen_2023-05-05_193438584.png\" \/>\n\t<meta property=\"og:image:width\" content=\"884\" \/>\n\t<meta property=\"og:image:height\" content=\"663\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"gdhwsw2\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"gdhwsw2\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 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\\\/maquina-de-reflejos\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/\"},\"author\":{\"name\":\"gdhwsw2\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/7491e54afbe5e7fd53467fccb9c7ce44\"},\"headline\":\"M\u00e1quina de Reflejos\",\"datePublished\":\"2023-05-05T17:36:53+00:00\",\"dateModified\":\"2023-05-05T17:36:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/\"},\"wordCount\":1307,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/imagen_2023-05-05_193438584.png\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/\",\"name\":\"M\u00e1quina de Reflejos - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/imagen_2023-05-05_193438584.png\",\"datePublished\":\"2023-05-05T17:36:53+00:00\",\"dateModified\":\"2023-05-05T17:36:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/imagen_2023-05-05_193438584.png\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/imagen_2023-05-05_193438584.png\",\"width\":884,\"height\":663},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-de-reflejos\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"M\u00e1quina de Reflejos\"}]},{\"@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\\\/7491e54afbe5e7fd53467fccb9c7ce44\",\"name\":\"gdhwsw2\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g\",\"caption\":\"gdhwsw2\"},\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/gdhwsw2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"M\u00e1quina de Reflejos - 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\/maquina-de-reflejos\/","og_locale":"es_ES","og_type":"article","og_title":"M\u00e1quina de Reflejos - Proyectos con Arduino.","og_description":"Introducci\u00f3n SEyTR_Mo_G2_2022-23 hemos creado una m\u00e1quina de reflejos cuyo objetivo principal era crear un juego de reflejos con luces, d\u00f3nde se trabaje la velocidad de reacci\u00f3n. Este tipo de juegos son empleados por deportistas&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2023-05-05T17:36:53+00:00","article_modified_time":"2023-05-05T17:36:55+00:00","og_image":[{"width":884,"height":663,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/imagen_2023-05-05_193438584.png","type":"image\/png"}],"author":"gdhwsw2","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"gdhwsw2","Tiempo de lectura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/"},"author":{"name":"gdhwsw2","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/7491e54afbe5e7fd53467fccb9c7ce44"},"headline":"M\u00e1quina de Reflejos","datePublished":"2023-05-05T17:36:53+00:00","dateModified":"2023-05-05T17:36:55+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/"},"wordCount":1307,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/imagen_2023-05-05_193438584.png","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/","name":"M\u00e1quina de Reflejos - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/imagen_2023-05-05_193438584.png","datePublished":"2023-05-05T17:36:53+00:00","dateModified":"2023-05-05T17:36:55+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/imagen_2023-05-05_193438584.png","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/imagen_2023-05-05_193438584.png","width":884,"height":663},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-de-reflejos\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"M\u00e1quina de Reflejos"}]},{"@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\/7491e54afbe5e7fd53467fccb9c7ce44","name":"gdhwsw2","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g","caption":"gdhwsw2"},"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/gdhwsw2\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/6537","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\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=6537"}],"version-history":[{"count":7,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/6537\/revisions"}],"predecessor-version":[{"id":6557,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/6537\/revisions\/6557"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/6558"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=6537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=6537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=6537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}