{"id":2955,"date":"2021-01-18T19:56:59","date_gmt":"2021-01-18T19:56:59","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=2955"},"modified":"2021-01-18T20:15:54","modified_gmt":"2021-01-18T20:15:54","slug":"macaco-explosao","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/","title":{"rendered":"MACACO EXPLOS\u00c3O"},"content":{"rendered":"\n<ul class=\"wp-block-list\"><li><em><span class=\"has-inline-color has-cyan-bluish-gray-color\">Manuel Bueno Lasso<\/span><\/em><\/li><li><em><span class=\"has-inline-color has-cyan-bluish-gray-color\">Juan Jos\u00e9 P\u00e9rez Abad<\/span><\/em><\/li><li><em><span class=\"has-inline-color has-cyan-bluish-gray-color\">Pablo de la Hoz Men\u00e9ndez<\/span><\/em><\/li><li><em><span class=\"has-inline-color has-cyan-bluish-gray-color\">Carlos Chamizo Cano<\/span><\/em><\/li><\/ul>\n\n\n\n<p class=\"has-text-align-left has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-large-font-size\">Introducci\u00f3n:<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Macaco Explos\u00e3o consiste en un juego cooperativo que simula una bomba, la cual deber\u00e1 ser desactivada por el jugador a trav\u00e9s de cuatro pruebas con la ayuda de un compa\u00f1ero, que usar\u00e1 la gu\u00eda del juego para interpretar las se\u00f1ales del dispositivo. El jugador deber\u00e1 resolver los cuatro minijuegos para ganar, pudiendo repetir una prueba tantas veces como lo desee, siempre y cuando no pierda en el proceso.<\/p>\n\n\n\n<p class=\"has-text-align-left has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-large-font-size\">Hardware:<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Lista de componentes utilizados:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"656\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/01\/image-1-1024x656.png\" alt=\"\" class=\"wp-image-2957\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-1-1024x656.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-1-300x192.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-1-768x492.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-1.png 1189w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-large-font-size\">Implementaci\u00f3n:<\/p>\n\n\n\n<p class=\"has-text-align-left\">Se han utilizado un total de 10 puertos digitales y 1 puerto anal\u00f3gico.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"570\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/01\/image-2-1024x570.png\" alt=\"\" class=\"wp-image-2958\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-2-1024x570.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-2-300x167.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-2-768x428.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-2.png 1358w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/01\/image-4.png\" alt=\"\" class=\"wp-image-2974\" width=\"1020\" height=\"242\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-4.png 915w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-4-300x71.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-4-768x182.png 768w\" sizes=\"auto, (max-width: 1020px) 100vw, 1020px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-left has-normal-font-size\"><br>Todos los componentes mencionados a excepci\u00f3n de las resistencias se encuentran conectados al puerto GND de la placa y, adicionalmente, el potenci\u00f3metro y los pulsadores est\u00e1n conectados al puerto de 5V.<\/p>\n\n\n\n<p class=\"has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-large-font-size\">Funcionamiento y Casos de Uso:<\/p>\n\n\n\n<p class=\"has-normal-font-size\">El proyecto consiste en resolver 4 minijuegos donde el jugador deber\u00e1 estar acompa\u00f1ado por un ayudante, el cual posee la gu\u00eda y deber\u00e1 dar indicaciones sobre cada minijuego.<br><br>El juego comienza en un estado inicial al cual solo se puede acceder al arrancar el dispositivo, al perder en alguno de los minijuegos o al ganar el juego completo. En esta fase, denominada Lobby, se iluminar\u00e1n todos los leds y sonar\u00e1 una melod\u00eda mientras se espera a que el jugador inicie la desactivaci\u00f3n de la bomba.<br><br>Gracias al pulsador 4, el jugador puede avanzar al men\u00fa de selecci\u00f3n, esto se indicar\u00e1 con un led amarillo. Cada minijuego corresponder\u00e1 con un led rojo del dispositivo, entre los cuales el usuario podr\u00e1 desplazarse usando los pulsadores 1 y 2. Para seleccionar un minijuego el jugador deber\u00e1 pulsar el bot\u00f3n 3, despu\u00e9s de lo cual se emitir\u00e1 un sonido que confirmar\u00e1 la selecci\u00f3n.<br><br>La din\u00e1mica de la \u201cbomba\u201d es la siguiente. El jugador deber\u00e1 completar todos los minijuegos, dentro de cada uno de los cuales tendr\u00e1 una serie de restricciones de uso y un l\u00edmite de intentos o un l\u00edmite de tiempo. En el caso de perder en uno de los minijuegos, la bomba explotar\u00e1, mientras que si se completan exitosamente todos ellos, se indicar\u00e1 mediante una melod\u00eda. <\/p>\n\n\n\n<p>El funcionamiento se encuentra explicado en detalle en la gu\u00eda del juego, que se encuentra en el PDF denominado \u201c<a href=\"https:\/\/drive.google.com\/file\/d\/1qdzflYqkOO8J_hor30ALbn7tNkPnTx0j\/view?usp=sharing\">Guia_de_juego<\/a>\u201d.<\/p>\n\n\n\n<p class=\"has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-large-font-size\">Minijuegos:<\/p>\n\n\n\n<p class=\"has-white-color has-pale-cyan-blue-background-color has-text-color has-background has-medium-font-size\">1: O tamanho do macaco<\/p>\n\n\n\n<p class=\"has-normal-font-size\">En este juego, el jugador deber\u00e1 adivinar un n\u00famero que ha sido elegido de forma aleatoria entre el 0 y el 9, ambos incluidos. Este deber\u00e1 introducir n\u00fameros mediante una secuencias de 0s y 1s, siendo 0 el primer bot\u00f3n y 1 el segundo bot\u00f3n, siguiendo las traducciones especificadas en la gu\u00eda. El sistema indicar\u00e1 mediante una combinaci\u00f3n de leds y sonidos si el n\u00famero introducido es mayor o menor. En caso de introducir un c\u00f3digo inexistente, se notificar\u00e1 al jugador pero no contar\u00e1 como fallo. El jugador contar\u00e1 con 4 intentos para completar el minijuego.<\/p>\n\n\n\n<p class=\"has-white-color has-pale-cyan-blue-background-color has-text-color has-background has-medium-font-size\">2: Macaco que n\u00e3o sabe onde est\u00e1<\/p>\n\n\n\n<p class=\"has-normal-font-size\">En este juego, la bomba crear\u00e1 una secuencia aleatoria de 5 pasos, que el jugador deber\u00e1 adivinar por prueba y error. Para ello, deber\u00e1 probar a utilizar los cuatro pulsadores en diferentes ordenaciones hasta dar con la secuencia adecuada. En caso de presionar un bot\u00f3n err\u00f3neo, el piezo reproducir\u00e1 un sonido grave y se deber\u00e1 reiniciar la secuencia. En caso de que se utilice el pulsador correcto, se reproducir\u00e1 un sonido agudo. <br>El tiempo para resolver este acertijo es de 40 segundos.<\/p>\n\n\n\n<p class=\"has-white-color has-pale-cyan-blue-background-color has-text-color has-background has-medium-font-size\">3: Acenda o macaco s\u00f4nico<\/p>\n\n\n\n<p class=\"has-normal-font-size\">En este juego, el jugador deber\u00e1 superar 3 fases para completar el juego. En cada fase se mostrar\u00e1 una combinaci\u00f3n de los leds 1 ,2 y 3. En funci\u00f3n de esta combinaci\u00f3n de leds se deber\u00e1 introducir una combinaci\u00f3n a trav\u00e9s de los botones 1, 2 y 3. Se confirmar\u00e1 la selecci\u00f3n pulsando el \u00faltimo bot\u00f3n. Tras introducir el c\u00f3digo, se reproducir\u00e1 una serie de sonidos en funci\u00f3n de los pulsadores utilizados y se indicar\u00e1 si estos han sido correctos o no. En caso de error, se iluminar\u00e1 el led 4 para indicar que es un fallo, se volver\u00e1 a mostrar la combinaci\u00f3n anterior y se dar\u00e1 un nuevo intento al jugador. En caso correcto, se pasar\u00e1 a la siguiente fase, o en caso de ser la \u00faltima fase, se reproducir\u00e1 una m\u00fasica de victoria. Las 3 fases funcionan de manera similar, sin embargo para cada fase habr\u00e1 c\u00f3digos distintos.  <br>El jugador tendr\u00e1 3 intentos para completar el juego.<\/p>\n\n\n\n<p class=\"has-white-color has-pale-cyan-blue-background-color has-text-color has-background has-medium-font-size\">4: Macaco cambalhota<\/p>\n\n\n\n<p class=\"has-normal-font-size\">Para este \u00faltimo m\u00f3dulo, se deben superar tres fases para terminar el juego. En la primera fase, se debe introducir un c\u00f3digo seg\u00fan los LEDs iluminados con una secuencia de 0s y 1s. En la segunda, sonar\u00e1 el piezo y se debe mover el potenci\u00f3metro hasta que se iluminen de nuevo los LEDs , pudiendo tambi\u00e9n cambiar el sonido. Una vez en la fase tres, en funci\u00f3n del tipo de sonido y los LEDs que se iluminen se deber\u00e1 introducir otro c\u00f3digo de 0s y 1s. En caso de fallar 3 veces, se pierde este juego.<\/p>\n\n\n\n<p class=\"has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-large-font-size\">Casos de Uso:<\/p>\n\n\n\n<p>El principal caso de uso de este proyecto ser\u00eda el de un juego de mesa ocasional para dos personas, como Sim\u00f3n Dice o similares. Tambi\u00e9n se podr\u00eda usar como ejercicio para ni\u00f1os y adultos con el objetivo mejorar el trabajo cooperativo bajo presi\u00f3n y el pensamiento r\u00e1pido.<\/p>\n\n\n\n<p class=\"has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-large-font-size\">C\u00f3digo:<\/p>\n\n\n\n<p class=\"has-normal-font-size\"> Los minijuegos han sido desarrollados de forma independiente por los diferentes miembros del equipo, de manera que la manera m\u00e1s pr\u00e1ctica de integrarlos ha sido la modularizaci\u00f3n. El n\u00famero de variables compartidas entre ellos es m\u00ednimo, siendo estas las referentes a los puertos de entrada y salida de la placa y, en ocasiones, variables reutilizadas para evitar el alargamiento innecesario del c\u00f3digo. De esta manera, la funci\u00f3n loop() ha sido dedicada principalmente a la implementaci\u00f3n del punto intermedio entre los minijuegos: el men\u00fa de selecci\u00f3n. Cada minijuego, a su vez, posee una serie de funciones b\u00e1sicas para su funcionamiento, a las que llamar\u00e1 cuando sea necesario.<br>El c\u00f3digo define tres posibles estados en el sistema:<br>\u25cf Estado de Lobby: es una funci\u00f3n llamada cada vez que se inicia o termina el juego, donde se permanece indefinidamente en un bucle hasta que se accione un pulsador concreto.<br>\u25cf Estado de Selecci\u00f3n: se corresponde con la propia funci\u00f3n loop(), donde se permite la selecci\u00f3n y llamada a las diferentes funciones que componen los minijuegos.<br>\u25cf Estado de Minijuego: son los m\u00f3dulos que constituyen los minijuegos, a los que se llamar\u00e1 desde el loop(). En caso de victoria, terminar\u00e1n de forma normal y devolver\u00e1n un 1, mientras que, en caso de que el jugador pierda, devolver\u00e1n un 0 y terminar\u00e1n antes de tiempo, provocando un regreso inmediato al Lobby.<\/p>\n\n\n\n<p class=\"has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-large-font-size\">Problemas y soluciones encontradas:<\/p>\n\n\n\n<p>En primer lugar, ha sido imposible reunirse de forma presencial debido a las limitaciones de desplazamientos y las medidas de seguridad que se han tomado durante el per\u00edodo de pandemia. Es por ello que se ha recurrido a reuniones a trav\u00e9s de discord para realizar las tareas comunes, como la creaci\u00f3n de la memoria, la unificaci\u00f3n del c\u00f3digo o las pruebas sobre el hardware.<br>Otro problema encontrado ha sido la heterogeneidad del c\u00f3digo de los minijuegos, ya que el hecho de asignar diferentes pruebas a distintas personas ha provocado que cada una de ellas estuviera programada de diferente manera, con variables distintas y, en ocasiones, puertos diferentes. Esto se ha solucionado siguiendo un dise\u00f1o del c\u00f3digo modular a la hora de juntarlo, adem\u00e1s de cambiar los nombres de las variables con el objetivo de lograr un conjunto unificado. De esta manera, cada minijuego es una funci\u00f3n separada del loop(), que puede llamar a sus propias funciones, y en el loop() ha sido dedicado al c\u00f3digo del men\u00fa de selecci\u00f3n.<br>La herramienta de simulaci\u00f3n utilizada (tinkercad) ha presentado comportamientos inesperados y, en ocasiones, incorrectos, durante las pruebas del c\u00f3digo. Esto se acentu\u00f3 especialmente durante la implementaci\u00f3n del contrarreloj, donde el tiempo de la simulaci\u00f3n se alteraba enormemente, hasta el punto de que pod\u00eda llegar a tardar 10 veces m\u00e1s de lo debido en completar los per\u00edodos establecidos. Ante esto, fue necesario realizar la implementaci\u00f3n de la cuenta atr\u00e1s a ciegas, sin capacidad de comprobar su funcionamiento hasta el momento de la implementaci\u00f3n hardware real.<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-large-font-size\">V\u00eddeo de muestra:<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-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=\"MACACO EXPLOS\u00c3O - Video Demostraci\u00f3n\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/tTh3hYWkZ1Q?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<\/div><\/div>\n\n\n\n<p class=\"has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-large-font-size\">Anexo I: Diagrama conductual<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"564\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/01\/image-3-1024x564.png\" alt=\"\" class=\"wp-image-2959\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-3-1024x564.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-3-300x165.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-3-768x423.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/01\/image-3.png 1252w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-large-font-size\">Anexo II: C\u00f3digo de la pr\u00e1ctica<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#define MAX_TIME 20000\n\nint sound = 2;\nint leds[4] = {6,5,4,3};\nint yLed = 7;\nint buttons[4] = {8,12,10,9};\nint pot = 1;\nint number = -1;\nint inNumber = -1;\nint chance = -1;\nint ctr = 0;\nint minigame = 0;\nint potValue = 0;\nint trials = 0;\nint sTime = 0;\nint cTime = 0;\nbool finalIt = false;\nbool switchIt = true;\nbool soundSolved = false;\nint numGames = 0;\nint finished = 0;\nbool reset = true;\nbool gameDone[4]= {false, false, false, false};\n\nenum notes{\n  LOWNOTE = 262,\n    MIDNOTE = 330,\n    MIDNOTE_2 = 392,\n    MIDNOTE_3 = 350,\n    HIGHNOTE = 523,\n    STARTNOTE = 440\n};\n\nenum minigame2Notes{\n  DO = 523,\n    RE = 587,\n    MI = 649\n};\n\n\nenum directions{\n  UP = 0,\n    DOWN = 1,\n    LEFT = 2,\n    RIGHT = 3\n};\n\nint input[4] = {2,2,2,2};\nint comb[4] = {2,2,2,2};\n\nint translate(int input[4]){\n  if(input[0] == 1 &amp;&amp; input[1] == 0 &amp;&amp; input[2] == 1 &amp;&amp; input[3] == 0 ){\n    return 0;\n  } else if (input[0] == 0 &amp;&amp; input[1] == 1 &amp;&amp; input[2] == 0 &amp;&amp; input[3] == 0 ) { \n    return 1;\n  } else if (input[0] == 1 &amp;&amp; input[1] == 1 &amp;&amp; input[2] == 1 &amp;&amp; input[3] == 1 ) { \n    return 2;\n  } else if (input[0] == 1 &amp;&amp; input[1] == 0 &amp;&amp; input[2] == 0 &amp;&amp; input[3] == 1 ) { \n    return 3;\n  } else if (input[0] == 1 &amp;&amp; input[1] == 0 &amp;&amp; input[2] == 0 &amp;&amp; input[3] == 0 ) { \n    return 4;\n  } else if (input[0] == 0 &amp;&amp; input[1] == 0 &amp;&amp; input[2] == 1 &amp;&amp; input[3] == 0 ) { \n    return 5;\n  } else if (input[0] == 0 &amp;&amp; input[1] == 0 &amp;&amp; input[2] == 1 &amp;&amp; input[3] == 1 ) { \n    return 6;\n  } else if (input[0] == 0 &amp;&amp; input[1] == 0 &amp;&amp; input[2] == 0 &amp;&amp; input[3] == 1 ) { \n    return 7;\n  } else if (input[0] == 0 &amp;&amp; input[1] == 0 &amp;&amp; input[2] == 0 &amp;&amp; input[3] == 0 ) { \n    return 8;\n  } else if (input[0] == 1 &amp;&amp; input[1] == 0 &amp;&amp; input[2] == 1 &amp;&amp; input[3] == 1 ) { \n    return 9;\n  } else {\n    return 10;\n  }\n}\nbool code(int comb[4]){\n  if(comb[0] == 0 &amp;&amp; comb[1] == 0 &amp;&amp; comb[2] == 1 &amp;&amp; comb[3] == 0 &amp;&amp; number == 0){\n    return true;\n  } else if (comb[0] == 1 &amp;&amp; comb[1] == 1 &amp;&amp; comb[2] == 0 &amp;&amp; comb[3] == 1 &amp;&amp; number == 1 ) { \n    return true;\n  } else if (comb[0] == 1 &amp;&amp; comb[1] == 0 &amp;&amp; comb[2] == 0 &amp;&amp; comb[3] == 0  &amp;&amp; number == 2) { \n    return true;\n  }\n  return false;\n}\nint lastButton(){\n    cTime = millis();\n    int elapsed = cTime-sTime;\n    if(elapsed &gt;= MAX_TIME &amp;&amp; finalIt){\n        return 6;\n    } else if(elapsed &gt;= MAX_TIME &amp;&amp; !finalIt){\n      if(switchIt){\n        sTime = cTime;\n        switchIt = false;\n      }\n      finalIt = true;\n    }\n  int bt = -1;\n    int up = 0;\n    int down = 0;\n    int left = 0;\n    int right = 0;\n    while(bt == -1){\n        cTime = millis();\n        elapsed = cTime-sTime;\n      \n        if(elapsed &gt;= MAX_TIME\/2 || finalIt){\n          digitalWrite(leds[0],HIGH);\n         } \n        if(elapsed &gt;= MAX_TIME || finalIt){\n          digitalWrite(leds[1],HIGH);\n        }\n      \n        if(elapsed &gt; MAX_TIME\/2 &amp;&amp; finalIt){\n          digitalWrite(leds[2],HIGH);\n        } \n      \n      if(elapsed &gt;= MAX_TIME &amp;&amp; finalIt){\n          return 6;\n        } else if(elapsed &gt;= MAX_TIME &amp;&amp; !finalIt){\n         if(switchIt){\n           sTime = cTime;\n           switchIt = false;\n          }\n        finalIt = true;\n      }\n      up = digitalRead(buttons[2]);\n        down = digitalRead(buttons[1]);\n        left = digitalRead(buttons[0]);\n        right = digitalRead(buttons[3]);\n        if(up == false){\n          delay(50);\n          if(up == false){\n            bt = UP;\n            return bt;\n          }\n        }\n      \n        if(down == false){\n          delay(50);\n          if(down == false){\n            bt = DOWN;\n            return bt;\n          }\n        }\n        if(left == false){\n          delay(50);\n          if(left == false){\n            bt = LEFT;\n            return bt;\n          }\n        }\n        if(right == false){\n          delay(50);\n          if(right == false){\n            bt = RIGHT;\n            return bt;\n          }\n        }\n    }\n    \n  return 0;\n}\n\nbool codeWSound(int comb[4]){\n  if(comb[0] == 0 &amp;&amp; comb[1] == 1 &amp;&amp; comb[2]== 0 &amp;&amp; comb[3]== 0 &amp;&amp; number == 0 ){\n    return true;\n  } else if(comb[0] == 0 &amp;&amp; comb[1] == 0 &amp;&amp; comb[2]== 0 &amp;&amp; comb[3]== 1 &amp;&amp; number == 1 ){\n    return true;\n  } else if (comb[0] == 1 &amp;&amp; comb[1] == 0 &amp;&amp; comb[2]== 1 &amp;&amp; comb[3]== 1 &amp;&amp; number == 2 ){\n    return true;\n  } else if (comb[0] == 0 &amp;&amp; comb[1] == 1 &amp;&amp; comb[2]== 1 &amp;&amp; comb[3]== 1 &amp;&amp; number == 3 ){\n    return true;\n  } else if (comb[0] == 0 &amp;&amp; comb[1] == 1 &amp;&amp; comb[2]== 1 &amp;&amp; comb[3]== 0 &amp;&amp; number == 4 ){\n    return true;\n  } else if (comb[0] == 1 &amp;&amp; comb[1] == 1 &amp;&amp; comb[2]== 0 &amp;&amp; comb[3]== 0 &amp;&amp; number == 5 ){\n    return true;\n  } \n  return false;\n}\n\nvoid end(){\n  tone(sound, MIDNOTE_2,500);\n      delay(500);\n        tone(sound, MIDNOTE_3,500);\n      delay(500);\n        tone(sound,MIDNOTE,500);\n        delay(1000);\n}\n\nint minigame0(){\n    trials = 0;\n  randomSeed(analogRead(0));\n    number = random() % 10;\n    chance = 0;\n    tone(sound, STARTNOTE,500);\n    delay(500);\n  while(inNumber != number){\n    ctr = 0;\n    for(int i = 0;i&lt;4;i++){\n      digitalWrite(leds[i],LOW);\n    }\n    while(ctr &lt; 4){\n      if(digitalRead(buttons[1]) == false &amp;&amp; digitalRead(buttons[2] == true)){\n        input[ctr] = 1;\n        digitalWrite(leds[ctr],HIGH);\n        ctr++;\n        delay(200);\n      }else if(digitalRead(buttons[2]) == false &amp;&amp; digitalRead(buttons[1] == true)){\n        input[ctr] = 0;\n        digitalWrite(leds[ctr],HIGH);\n        ctr++;\n        delay(200);\n        }   \n      if(ctr == 4){\n        if(translate(input) == 10){\n          ctr = 0;\n          tone(sound, STARTNOTE,500);\n        delay(500);\n          digitalWrite(leds[1],LOW);\n          digitalWrite(leds[3],LOW);\n          digitalWrite(leds[0],HIGH);\n          digitalWrite(leds[2],HIGH);\n          delay(2000);\n          digitalWrite(leds[0],LOW);\n          digitalWrite(leds[2],LOW);\n        }\n      }\n    }\n    for(int i = 0;i&lt;4;i++){\n      digitalWrite(leds[i],LOW);\n    }\n    inNumber = translate(input);\n    if(inNumber &lt; number){\n        trials ++;\n          if(trials == 4){\n            for(int i = 0;i&lt;4;i++){\n              digitalWrite(leds[i],HIGH);\n            }\n            end();\n            for(int i = 0;i&lt;4;i++){\n              digitalWrite(leds[i],LOW);\n            }\n            reset = true;\n            return 0;\n          }\n      chance = random()%2;\n        switch(chance){\n          case 0:\n            tone(sound,LOWNOTE,500);\n            delay(500);\n          digitalWrite(leds[0],HIGH);\n            delay(2000);\n          break;\n          case 1:\n            tone(sound,HIGHNOTE,500);\n            delay(500);\n          break;\n        }\n    } else if (inNumber &gt; number){\n        trials ++;\n          if(trials == 4){\n            for(int i = 0;i&lt;4;i++){\n              digitalWrite(leds[i],HIGH);\n            }\n            end();\n            for(int i = 0;i&lt;4;i++){\n              digitalWrite(leds[i],LOW);\n            }\n            reset = true;\n            return 0;\n          }\n      chance = random()%2;\n        switch(chance){\n          case 0:\n          tone(sound,HIGHNOTE,500);\n            delay(500);\n          digitalWrite(leds[0],HIGH);\n            delay(2000);\n          break;\n          case 1:\n          tone(sound,LOWNOTE,500);\n            delay(500);\n          break;\n        }\n    } else {\n      tone(sound,LOWNOTE,500);\n        delay(500);\n        tone(sound,MIDNOTE,500);\n        delay(500);\n        tone(sound,MIDNOTE_2,500);\n        delay(500);\n        tone(sound,HIGHNOTE,500);\n        delay(500);\n    }\n  }\n  return 1;\n}\n\nint minigame1(){\n  finalIt = false;\n  switchIt = true;\n  for(int i = 0;i&lt;4;i++){\n    digitalWrite(leds[i],LOW);  \n  }\n  int start = 0;\n  tone(sound, STARTNOTE,500);\n  delay(500);\n  start = digitalRead(buttons[0]);\n  while(start == true){\n    start = digitalRead(buttons[0]);\n    if(start == false){\n      delay(200);\n    }\n  }\n  sTime = millis();\n  randomSeed(analogRead(0));\n  int lastB = -1;\n  bool solved = false;\n  int puz[5];\n  int j =0;\n  for(int i = 0;i&lt;5;i++){\n    puz[i] = random()%4;\n  }\n  while(!solved){\n    lastB = lastButton();\n    if(lastB == 6){\n        end();\n        for(int i = 0;i&lt;4;i++){\n        digitalWrite(leds[i],LOW);  \n    }\n        reset = true;\n        return 0;\n    }\n    if(lastB == puz[j]){\n      j++;\n        tone(sound,HIGHNOTE,300);\n        delay(300);\n    } else {\n      j = 0;\n        tone(sound,LOWNOTE,300);\n        delay(300);\n    }\n    if(j == 5){\n      solved = true;\n    }\n  }\n  tone(sound,LOWNOTE,500);\n  delay(500);\n  tone(sound,MIDNOTE,500);\n  delay(500);\n  tone(sound,MIDNOTE_2,500);\n  delay(500);\n  tone(sound,HIGHNOTE,500);\n  delay(500);\n  return 1;\n}\n\nint minigame2(){\n  for(int i=0;i&lt;3;i++){\n      digitalWrite(leds[i],LOW);\n    }\n  trials = 0;\n  randomSeed(analogRead(0));\n  tone(sound, STARTNOTE,500);\n    delay(500);\n  int buttonState [3] = {0,0,0};\n  bool confirmed = false;\n  bool completed [3] = {false, false, false};\n  int lights[3];\n  lights[0] = random()%3;\n  lights[1] = random()%4;\n  lights[2] = random()%7;\n  while(!completed[2]){\n    confirmed = false;\n    for(int i = 0;i&lt;3;i++){\n      buttonState[i] = 0;\n    }\n    for(int i = 0;i&lt;4;i++){\n            digitalWrite(leds[i],LOW);\n        }\n    if(trials == 3){\n      end();\n      reset = true;\n      return 0;\n    }\n    if(!completed[0]){\n      switch(lights[0]){\n        case 0:\n          digitalWrite(leds[2],HIGH);\n        break;\n        case 1:\n          digitalWrite(leds[0],HIGH);\n        break;\n        case 2:\n          digitalWrite(leds[1],HIGH);\n        break;\n      }\n    } else if(!completed[1]){\n      switch(lights[1]){\n        case 0:\n          digitalWrite(leds[0],HIGH);\n          digitalWrite(leds[2],HIGH);\n        break;\n        case 1:\n          digitalWrite(leds[0],HIGH);\n          digitalWrite(leds[1],HIGH);\n          digitalWrite(leds[2],HIGH);\n        break;\n        case 2:\n          digitalWrite(leds[1],HIGH);\n          digitalWrite(leds[2],HIGH);\n        break;\n        case 3:\n          digitalWrite(leds[0],HIGH);\n          digitalWrite(leds[1],HIGH);\n        break;\n      }\n    } else if(!completed[2]){\n      switch(lights[2]){\n        case 0:\n          digitalWrite(leds[1],HIGH);\n            digitalWrite(leds[2],HIGH);\n        break;\n        case 1:\n          digitalWrite(leds[0],HIGH);\n          digitalWrite(leds[1],HIGH);\n        break;\n        case 2:\n          digitalWrite(leds[0],HIGH);\n          digitalWrite(leds[2],HIGH);\n        break;\n        case 3:\n          digitalWrite(leds[1],HIGH);\n        break;\n        case 4:\n          digitalWrite(leds[0],HIGH);\n        break;\n        case 5:\n          digitalWrite(leds[2],HIGH);\n        break;\n        case 6:\n          digitalWrite(leds[0],HIGH);\n          digitalWrite(leds[1],HIGH);\n          digitalWrite(leds[2],HIGH);\n        break;\n      }\n    }\n    delay(1000);\n    for(int i=0;i&lt;3;i++){\n      digitalWrite(leds[i],LOW);\n    }\n    int k = 0;\n    while(!confirmed){\n      if(digitalRead(buttons[2]) == false){\n        buttonState[0] = 1;\n        digitalWrite(leds[0],HIGH);\n        delay(200);\n      } \n      if(digitalRead(buttons[1]) == false){\n      buttonState[1] = 1;\n        digitalWrite(leds[1],HIGH);\n        delay(200);\n      } \n      if(digitalRead(buttons[0])== false){\n        buttonState[2] = 1;\n        digitalWrite(leds[2],HIGH);\n        delay(200);\n      }\n      if(digitalRead(buttons[3]) == false){\n        confirmed = true;\n        delay(200);\n      }\n    }\n    for(int i = 0;i &lt;3;i++){\n      if(buttonState[i] == 1){\n        switch(i){\n          case 0:\n            tone(sound,DO,500);\n          break;\n          case 1:\n            tone(sound,RE,500);\n          break;\n          case 2:\n            tone(sound,MI,500);\n          break;\n        }\n        delay(500);\n        digitalWrite(leds[i],LOW);\n      }\n    }\n    delay(500);\n    if(!completed[0]){\n      switch(lights[0]){\n        case 0:\n        if(buttonState[0] == 1 &amp;&amp; buttonState[1] == 0 &amp;&amp; buttonState[2] == 0){\n          completed[0] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n        case 1:\n        if(buttonState[0] == 1 &amp;&amp; buttonState[1] == 1 &amp;&amp; buttonState[2] == 0){\n          completed[0] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n    case 2:\n        if(buttonState[0] == 1 &amp;&amp; buttonState[1] == 0 &amp;&amp; buttonState[2] == 1){\n          completed[0] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n      }\n    } else if (!completed[1]){\n      switch(lights[1]){\n        case 0:\n        if(buttonState[0] == 0 &amp;&amp; buttonState[1] == 1 &amp;&amp; buttonState[2] == 1){\n          completed[1] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n        case 1:\n        if(buttonState[0] == 1 &amp;&amp; buttonState[1] == 0 &amp;&amp; buttonState[2] == 1){\n          completed[1] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n    case 2:\n        if(buttonState[0] == 0 &amp;&amp; buttonState[1] == 0 &amp;&amp; buttonState[2] == 1){\n          completed[1] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n        case 3:\n        if(buttonState[0] == 1 &amp;&amp; buttonState[1] == 1 &amp;&amp; buttonState[2] == 0){\n          completed[1] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n      }\n    } else if(!completed[2]){\n      switch(lights[2]){\n        case 0:\n          if(buttonState[0] == 0 &amp;&amp; buttonState[1] == 1 &amp;&amp; buttonState[2] == 1){\n          completed[2] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n    case 1:\n          if(buttonState[0] == 0 &amp;&amp; buttonState[1] == 1 &amp;&amp; buttonState[2] == 0){\n          completed[2] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n        case 2:\n          if(buttonState[0] == 1 &amp;&amp; buttonState[1] == 1 &amp;&amp; buttonState[2] == 0){\n          completed[2] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n    case 3:\n          if(buttonState[0] == 1 &amp;&amp; buttonState[1] == 0 &amp;&amp; buttonState[2] ==1){\n          completed[2] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n        case 4:\n          if(buttonState[0] == 1 &amp;&amp; buttonState[1] == 1 &amp;&amp; buttonState[2] == 1){\n          completed[2] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n    case 5:\n          if(buttonState[0] == 1 &amp;&amp; buttonState[1] == 0 &amp;&amp; buttonState[2] == 0){\n          completed[2] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n        case 6:\n          if(buttonState[0] == 0 &amp;&amp; buttonState[1] == 0 &amp;&amp; buttonState[2] == 1){\n          completed[2] = true;\n        } else {\n          trials ++;\n            digitalWrite(leds[3],HIGH);\n            delay(500);\n        }\n        break;\n      }\n    }\n  }\n  noTone(sound);\n  delay(500);\n  tone(sound,LOWNOTE,500);\n  delay(500);\n  tone(sound,MIDNOTE,500);\n  delay(500);\n  tone(sound,MIDNOTE_2,500);\n  delay(500);\n  tone(sound,HIGHNOTE,500);\n  delay(500);\n  return 1;\n}\n\nint minigame3(){\n    trials = 0;\n    for(int i = 0;i&lt;4;i++){\n      digitalWrite(leds[i],LOW);  \n  }\n  randomSeed(analogRead(0));\n    tone(sound, STARTNOTE,500);\n    delay(500);\n    number = random()%3;\n    switch(number){\n      case 0:\n      for(int i = 0;i&lt;3;i++){\n          digitalWrite(leds[i],HIGH);\n        }\n        break;\n        case 1:\n        digitalWrite(leds[0],HIGH);\n        digitalWrite(leds[3],HIGH);\n        break;\n        case 2:\n        digitalWrite(leds[0],HIGH);\n        digitalWrite(leds[1],HIGH);\n        break;\n    }\n    ctr = 0;\n    delay(4000);\n    for(int i = 0;i&lt;4;i++){\n      digitalWrite(leds[i],LOW);  \n    }\n    while(ctr &lt; 4){\n      if(digitalRead(buttons[1]) == false &amp;&amp; digitalRead(buttons[2] == true)){\n        comb[ctr] = 1;\n        digitalWrite(leds[ctr],HIGH);\n        ctr++;\n        delay(200);\n      }else if(digitalRead(buttons[2]) == false &amp;&amp; digitalRead(buttons[1] == true)){\n        comb[ctr] = 0;\n        digitalWrite(leds[ctr],HIGH);\n        ctr++;\n        delay(200);\n        }\n      if(ctr == 4){\n        if(code(comb) == false){\n          trials ++;\n          if(trials == 3){\n            for(int i = 0;i&lt;4;i++){\n              digitalWrite(leds[i],HIGH);\n            }\n            tone(sound, MIDNOTE_2,500);\n          delay(500);\n            tone(sound, MIDNOTE_3,500);\n          delay(500);\n            tone(sound,MIDNOTE,500);\n            delay(1000);\n            for(int i = 0;i&lt;4;i++){\n              digitalWrite(leds[i],LOW);\n            }\n            reset = true;\n            return 0;\n          }\n          ctr = 0;\n          for(int i = 0;i&lt;4;i++){\n        digitalWrite(leds[i],LOW);  \n      }\n          tone(sound, STARTNOTE,500);\n        delay(500);\n          \n          switch(number){\n        case 0:\n          for(int i = 0;i&lt;3;i++){\n            digitalWrite(leds[i],HIGH);\n            }\n          break;\n          case 1:\n            digitalWrite(leds[0],HIGH);\n            digitalWrite(leds[3],HIGH);\n          break;\n          case 2:\n            digitalWrite(leds[0],HIGH);\n            digitalWrite(leds[1],HIGH);\n          break;\n        }\n          delay(500);\n          for(int i = 0;i&lt;4;i++){\n        digitalWrite(leds[i],LOW);  \n      }\n        }\n      }\n    } \n  number = random() %2;\n  for(int i = 0;i&lt;4;i++){\n  digitalWrite(leds[i],LOW);  \n  }\n  while(!soundSolved){\n    switch(number){\n      case 0:\n        tone(sound, LOWNOTE);\n        delay(500);\n        break;\n        case 1:\n        tone(sound, HIGHNOTE);\n        delay(500);\n        break;\n    }\n    potValue = analogRead(pot);\n    if(potValue&gt; 300 &amp;&amp; potValue&lt;550){\n        if(number == 1){\n          soundSolved = true;\n            noTone(sound);\n      }\n    } else if(potValue &gt; 650 &amp;&amp; potValue&lt;900){\n        if(number == 0){\n          soundSolved = true;\n            noTone(sound);\n      }\n    }\n  }\n for(int i = 0;i&lt;4;i++){\n  digitalWrite(leds[i],LOW);  \n }\n number = random()%5;\n  while(!codeWSound(comb)){\n    switch(number){\n      case 0:\n      digitalWrite(leds[0],HIGH);\n        digitalWrite(leds[1],HIGH);\n        digitalWrite(leds[3],HIGH);\n        tone(sound,LOWNOTE);\n      delay(500);\n        break;\n        case 1:\n        digitalWrite(leds[1],HIGH);\n        digitalWrite(leds[2],HIGH);\n        tone(sound,LOWNOTE);\n        delay(500);\n        break;\n        case 2:\n        digitalWrite(leds[2],HIGH);\n        digitalWrite(leds[3],HIGH);\n        tone(sound,LOWNOTE);\n        delay(500);\n        break;\n        case 3:\n        digitalWrite(leds[0],HIGH);\n        digitalWrite(leds[1],HIGH);\n        digitalWrite(leds[3],HIGH);\n        tone(sound,HIGHNOTE);\n        delay(500);\n        break;\n        case 4:\n        digitalWrite(leds[1],HIGH);\n        digitalWrite(leds[2],HIGH);\n        tone(sound,HIGHNOTE);\n        delay(500);\n        break;\n        case 5:\n        digitalWrite(leds[2],HIGH);\n        digitalWrite(leds[3],HIGH);\n        tone(sound,HIGHNOTE);\n        delay(500);\n        break;\n    }\n    ctr = 0;\n    delay(4000);\n    for(int i = 0;i&lt;4;i++){\n      digitalWrite(leds[i],LOW);  \n    }\n    while(ctr &lt; 4){\n      if(digitalRead(buttons[1]) == false &amp;&amp; digitalRead(buttons[2] == true)){\n        comb[ctr] = 1;\n        digitalWrite(leds[ctr],HIGH);\n        ctr++;\n        delay(200);   \n      }else if(digitalRead(buttons[2]) == false &amp;&amp; digitalRead(buttons[1] == true)){\n        comb[ctr] = 0;\n        digitalWrite(leds[ctr],HIGH);\n        ctr++;\n        delay(200);   \n        }   \n    }\n    if(!codeWSound(comb)){\n      trials ++;\n          if(trials == 3){\n            for(int i = 0;i&lt;4;i++){\n              digitalWrite(leds[i],HIGH);\n            }\n            tone(sound, MIDNOTE_2,500);\n          delay(500);\n            tone(sound, MIDNOTE_3,500);\n          delay(500);\n            tone(sound,MIDNOTE,500);\n            delay(1000);\n            for(int i = 0;i&lt;4;i++){\n              digitalWrite(leds[i],LOW);\n            }\n            reset = true;\n            return 0;\n          } \n    }    \n    for(int i = 0;i&lt;4;i++){\n      digitalWrite(leds[i],LOW);  \n  }\n  }\n  noTone(sound);\n  delay(500);\n  tone(sound,LOWNOTE,500);\n  delay(500);\n  tone(sound,MIDNOTE,500);\n  delay(500);\n  tone(sound,MIDNOTE_2,500);\n  delay(500);\n  tone(sound,HIGHNOTE,500);\n  delay(500);\n  return 1;\n}\n\nint lobby(){\n  for(int i = 0;i&lt;4;i++){\n    digitalWrite(leds[i],HIGH);\n  }\n  digitalWrite(yLed,HIGH);\n  while(digitalRead(buttons[3])== true){\n      tone(sound,HIGHNOTE,40);\n      delay(500);\n    if(digitalRead(buttons[3])== false){\n      return 0;\n    }\n      tone(sound,LOWNOTE,40);\n      delay(500);\n  }\n  return 0;\n}\n\nvoid setup(){\n  pinMode(sound,OUTPUT);\n    pinMode(yLed,OUTPUT);\n    for(int i = 0;i&lt;4;i++){\n      pinMode(leds[i],OUTPUT);\n    }\n    for(int i = 0;i&lt;3;i++){\n    pinMode(buttons[i],INPUT);    \n    }\n}\n\nvoid loop(){\n    if(reset){\n      lobby();\n        delay(500);\n      reset = false;\n    }\n    finished = 0;\n    minigame = 0;\n    for(int i = 0;i&lt;4;i++){\n      digitalWrite(leds[i],LOW);\n    }\n  digitalWrite(yLed,HIGH);\n    digitalWrite(leds[minigame],HIGH);\n  while(digitalRead(buttons[0]) == true){\n      if(digitalRead(buttons[1]) == false &amp;&amp; digitalRead(buttons[2] == true)){\n        digitalWrite(leds[minigame],LOW);\n        if(minigame &lt; 3){\n          minigame++;\n        }\n        digitalWrite(leds[minigame],HIGH);\n        delay(200);\n      } else if(digitalRead(buttons[2]) == false &amp;&amp; digitalRead(buttons[1] == true)){\n        digitalWrite(leds[minigame],LOW);\n        if(minigame &gt; 0){\n          minigame --;\n        }\n        digitalWrite(leds[minigame],HIGH);\n        delay(200);\n      }\n  }\n  digitalWrite(yLed,LOW);\n  digitalWrite(leds[minigame],LOW);\n  switch(minigame){\n    case 0:\n    finished = minigame0();\n    if(finished == 1 &amp;&amp; gameDone[0] == false){\n      numGames++;\n        gameDone[0] = true;\n    }\n    break;\n    case 1:\n    finished = minigame1();\n    if(finished == 1 &amp;&amp; gameDone[1] == false){\n      numGames++;\n        gameDone[1] = true;\n    }\n    break;\n    case 2:\n    finished = minigame2();\n    if(finished == 1 &amp;&amp; gameDone[2] == false){\n      numGames++;\n        gameDone[2] = true;\n    }\n    break;\n    case 3:\n    finished = minigame3();\n    if(finished == 1 &amp;&amp; gameDone[3] == false){\n      numGames++;\n        gameDone[3] = true;\n    }\n    break;\n  }\n  if(numGames == 4){\n    reset = true;\n    noTone(sound);\n  delay(500);\n    tone(sound,LOWNOTE,500);\n    delay(500);\n    tone(sound,MIDNOTE,500);\n    delay(500);\n    tone(sound,MIDNOTE_2,500);\n    delay(500);\n    tone(sound,HIGHNOTE,500);\n    delay(500);\n    tone(sound,MIDNOTE_2,500);\n    delay(500);\n    tone(sound,MIDNOTE,500);\n    delay(500);\n    tone(sound,LOWNOTE,500);\n    delay(1000);\n  }\n    \n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Manuel Bueno Lasso Juan Jos\u00e9 P\u00e9rez Abad Pablo de la Hoz Men\u00e9ndez Carlos Chamizo Cano Introducci\u00f3n: Macaco Explos\u00e3o consiste en un juego cooperativo que simula una bomba, la cual deber\u00e1 ser desactivada por el&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[8,103,101,104,23,52,16,105],"class_list":["post-2955","post","type-post","status-publish","format-standard","hentry","category-proyectos","tag-arduino","tag-bomba","tag-c","tag-defuse","tag-grupo-8","tag-juegos","tag-urjc","tag-zas-zas-pum"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MACACO EXPLOS\u00c3O - 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\/macaco-explosao\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MACACO EXPLOS\u00c3O - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Manuel Bueno Lasso Juan Jos\u00e9 P\u00e9rez Abad Pablo de la Hoz Men\u00e9ndez Carlos Chamizo Cano Introducci\u00f3n: Macaco Explos\u00e3o consiste en un juego cooperativo que simula una bomba, la cual deber\u00e1 ser desactivada por el&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-18T19:56:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-18T20:15:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/01\/image-1-1024x656.png\" \/>\n<meta name=\"author\" content=\"Administrador de la red\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Administrador de la red\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/\"},\"author\":{\"name\":\"Administrador de la red\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/bdc38fea664f13638d2a51f4d2fc7211\"},\"headline\":\"MACACO EXPLOS\u00c3O\",\"datePublished\":\"2021-01-18T19:56:59+00:00\",\"dateModified\":\"2021-01-18T20:15:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/\"},\"wordCount\":1460,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2021\\\/01\\\/image-1-1024x656.png\",\"keywords\":[\"Arduino\",\"Bomba\",\"C\",\"Defuse\",\"Grupo 8\",\"juegos\",\"urjc\",\"ZAS ZAS PUM\"],\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/\",\"name\":\"MACACO EXPLOS\u00c3O - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2021\\\/01\\\/image-1-1024x656.png\",\"datePublished\":\"2021-01-18T19:56:59+00:00\",\"dateModified\":\"2021-01-18T20:15:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2021\\\/01\\\/image-1-1024x656.png\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2021\\\/01\\\/image-1-1024x656.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/macaco-explosao\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MACACO EXPLOS\u00c3O\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"name\":\"Proyectos con Arduino.\",\"description\":\"Blog de proyectos de Arduino de alumnos de la URJC\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\",\"name\":\"Universidad Rey Juan Carlos\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"width\":745,\"height\":288,\"caption\":\"Universidad Rey Juan Carlos\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/bdc38fea664f13638d2a51f4d2fc7211\",\"name\":\"Administrador de la red\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"caption\":\"Administrador de la red\"},\"sameAs\":[\"https:\\\/\\\/blogs.etsii.urjc.es\"],\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/etsiiadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MACACO EXPLOS\u00c3O - 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\/macaco-explosao\/","og_locale":"es_ES","og_type":"article","og_title":"MACACO EXPLOS\u00c3O - Proyectos con Arduino.","og_description":"Manuel Bueno Lasso Juan Jos\u00e9 P\u00e9rez Abad Pablo de la Hoz Men\u00e9ndez Carlos Chamizo Cano Introducci\u00f3n: Macaco Explos\u00e3o consiste en un juego cooperativo que simula una bomba, la cual deber\u00e1 ser desactivada por el&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2021-01-18T19:56:59+00:00","article_modified_time":"2021-01-18T20:15:54+00:00","og_image":[{"url":"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/01\/image-1-1024x656.png","type":"","width":"","height":""}],"author":"Administrador de la red","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Administrador de la red","Tiempo de lectura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/"},"author":{"name":"Administrador de la red","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/bdc38fea664f13638d2a51f4d2fc7211"},"headline":"MACACO EXPLOS\u00c3O","datePublished":"2021-01-18T19:56:59+00:00","dateModified":"2021-01-18T20:15:54+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/"},"wordCount":1460,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/01\/image-1-1024x656.png","keywords":["Arduino","Bomba","C","Defuse","Grupo 8","juegos","urjc","ZAS ZAS PUM"],"articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/","name":"MACACO EXPLOS\u00c3O - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/01\/image-1-1024x656.png","datePublished":"2021-01-18T19:56:59+00:00","dateModified":"2021-01-18T20:15:54+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/01\/image-1-1024x656.png","contentUrl":"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/01\/image-1-1024x656.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/macaco-explosao\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"MACACO EXPLOS\u00c3O"}]},{"@type":"WebSite","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","name":"Proyectos con Arduino.","description":"Blog de proyectos de Arduino de alumnos de la URJC","publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization","name":"Universidad Rey Juan Carlos","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","width":745,"height":288,"caption":"Universidad Rey Juan Carlos"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/bdc38fea664f13638d2a51f4d2fc7211","name":"Administrador de la red","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","caption":"Administrador de la red"},"sameAs":["https:\/\/blogs.etsii.urjc.es"],"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/etsiiadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/2955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=2955"}],"version-history":[{"count":17,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/2955\/revisions"}],"predecessor-version":[{"id":2982,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/2955\/revisions\/2982"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=2955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=2955"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=2955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}