EJERCICIO SIMON: Axel Oropeza Matias Rodriguez

Dependencies:   mbed tsi_sensor

Files at this revision

API Documentation at this revision

Comitter:
matirodriguez
Date:
Sat Jun 08 15:22:16 2019 +0000
Parent:
1:f6ea213ed382
Commit message:
Ejercicio "SIMON" terminado

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r f6ea213ed382 -r 90667b428ce6 main.cpp
--- a/main.cpp	Wed May 22 23:40:43 2019 +0000
+++ b/main.cpp	Sat Jun 08 15:22:16 2019 +0000
@@ -13,7 +13,6 @@
       VERDE,
       AZUL
      };
-
 /*  Defino los nombres de los estados como
 numeros enteros con la funcion "enum{}"
 */
@@ -23,19 +22,19 @@
       MUESTRO_SECUENCIA,
       COMPARO_SECUENCIA
      };
-
+     
 //Maquina "MAQ_MUESTREO()"
 enum {ESPERO_HAB,
       MUESTRO,
       APAGO
      };
-
+     
 //Maquina "MAQ_COMPARO()"
 enum {ESPERAR_HAB,
       ESPERAR_USUARIO,
       COMPARO
      };
-
+     
 #define ERROR 15
 #define CORRECTO 24
 
@@ -55,6 +54,10 @@
 
 void genero_secuencia(); // Funcion que utilizo para generar la secuencia aleatoria.
 
+void apago_leds();
+
+void cambio_estado();
+
 //Variables que indican el estado de las maquinas (empiezo en estado de reset)
 int estado_maq_sec = ESPERO_USUARIO;
 int estado_maq_mues = ESPERO_HAB;
@@ -83,6 +86,9 @@
 Ticker temporizador;    // Ticker para contar 1 segundo en los leds
 Ticker pulsacion;   // Ticker para usar la funcion pulsacion_TSI()
 
+Timeout apago;
+Timeout estado; // Una pequeña demora que agrego entre que comparo y muestro los niveles del juego
+
 // DEFINO SALIDAS
 DigitalOut ledrojo(LED_RED);
 DigitalOut ledverde(LED_GREEN);
@@ -90,14 +96,13 @@
 
 AnalogIn noise(PTB0);   // Entrada que usaré para generar la secuencia aleatoria con el ruido que me genere
 
-
 int main(void)
 {
 
 // Uno las funciones con el ticker correspondiente
-    lectura.attach(LEER_TSI,0.1);
-    pulsacion.attach(pulsacion_TSI,0.001);
-    temporizador.attach(LED_1SEG,0.01);
+    lectura.attach(&LEER_TSI,0.1);
+    pulsacion.attach(&pulsacion_TSI,0.001);
+    temporizador.attach(&LED_1SEG,0.01);
 
 // Apago los leds al iniciar
     ledrojo = 1;
@@ -119,6 +124,12 @@
     }
 }
 
+void apago_leds(){
+    ledrojo=1;
+    ledverde=1;
+    ledazul=1;    
+}
+
 void LEER_TSI()
 {
     float auxiliar = 0;
@@ -130,15 +141,15 @@
         color_teclado = NADA;
     }
 
-    if((auxiliar > 0)&&(auxiliar < 0.33)) {
+    if((auxiliar > 0.05)&&(auxiliar < 0.30)) {
         color_teclado = ROJO;
     }
 
-    if((auxiliar >= 0.33)&&(auxiliar <= 0.66)) {
+    if((auxiliar >= 0.38)&&(auxiliar <= 0.60)) {
         color_teclado = VERDE;
     }
 
-    if((auxiliar > 0.66)&&(auxiliar <= 1)) {
+    if((auxiliar > 0.68)&&(auxiliar <= 1)) {
         color_teclado = AZUL;
     }
 }
@@ -316,14 +327,20 @@
             switch(color[nivel_mostrado]) { // Muestro el color correspondiente al primer nivel, y voy cambiando cada 2 segundos
                 case ROJO:
                     ledrojo = 0;
+                    ledverde=1;
+                    ledazul=1;
                     break;
 
                 case VERDE:
                     ledverde = 0;
+                    ledazul=1;
+                    ledrojo=1;
                     break;
 
                 case AZUL:
                     ledazul = 0;
+                    ledrojo=1;
+                    ledverde=1;
                     break;
             }
 
@@ -398,6 +415,38 @@
                 switch(color[nivel_comparado]) {
                     case ROJO:
                         printf("Rojo\n");
+                        ledrojo=0;
+                        break;
+                    case VERDE:
+                        printf("Verde\n");
+                        ledverde=0;
+                        break;
+                    case AZUL:
+                        printf("Azul\n");
+                        ledazul=0;
+                        break;
+                }
+                apago.attach(&apago_leds,0.5);
+                obtenido = NADA;    // Reseteo la variable
+                if(nivel_comparado <= nivel) {  // Si quedan niveles
+                    
+                    estado_maq_comp = ESPERAR_USUARIO; //Vuelvo al estado de esperar que el usuario ingrese algo y
+                    nivel_comparado++;  // Paso al siguiente nivel.
+                }
+                if(nivel_comparado > nivel) { // Si no quedan niveles
+                    estado_maq_comp = ESPERAR_HAB;  // Reseteo la maquina
+                     estado.attach(&cambio_estado,1); // Indico que todo lo ingresado hasta este nivel es correcto
+                }
+            } else {    // Si, en cambio, se ingreso algo incorrecto
+                estado_maq_comp = ESPERAR_HAB;  // Reseteo la maquina
+                fin_comparo = ERROR;    // Marco error
+                //Imprimo en pantalla que hubo error para comprobar
+                printf("ERROR\n");
+                
+                // Imprimo en pantalla el valor que se ingresó para comprobar
+                switch(color[nivel_comparado]) {
+                    case ROJO:
+                        printf("Rojo\n");
                         break;
                     case VERDE:
 
@@ -409,24 +458,6 @@
 
 
                 }
-                obtenido = NADA;    // Reseteo la variable
-                if(nivel_comparado <= nivel) {  // Si quedan niveles
-                    estado_maq_comp = ESPERAR_USUARIO;  //Vuelvo al estado de esperar que el usuario ingrese algo y
-                    nivel_comparado++;  // Paso al siguiente nivel.
-                }
-                if(nivel_comparado > nivel) { // Si no quedan niveles
-                    estado_maq_comp = ESPERAR_HAB;  // Reseteo la maquina
-                    fin_comparo = CORRECTO; // Indico que todo lo ingresado hasta este nivel es correcto
-                }
-            } else {    // Si, en cambio, se ingreso algo incorrecto
-                estado_maq_comp = ESPERAR_HAB;  // Reseteo la maquina
-                fin_comparo = ERROR;    // Marco error
-                //Imprimo en pantalla que hubo error para comprobar
-                printf("ERROR");
-                printf("ERROR");
-                printf("ERROR");
-                printf("ERROR");
-                printf("ERROR\n");
 
             }
             break;
@@ -469,4 +500,8 @@
         }
     }
     printf("\n");
+}
+
+void cambio_estado(){
+    fin_comparo = CORRECTO;
 }
\ No newline at end of file