![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
TP 1 Ejer 2 simon Cobas, Montero
main.cpp
- Committer:
- cobasjuan
- Date:
- 2019-05-21
- Revision:
- 0:694030aeaef8
- Child:
- 1:2ec64607a2a4
File content as of revision 0:694030aeaef8:
#include "mbed.h" #include "tsi_sensor.h" /* This defines will be replaced by PinNames soon */ #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) #define ELEC0 9 #define ELEC1 10 #elif defined (TARGET_KL05Z) #define ELEC0 9 #define ELEC1 8 #else #error TARGET NOT DEFINED #endif #define ESPERAR_A 300 #define MOSTRAR 301 #define ESPERO_JUG 302 #define MUESTREO 303 #define ESPERAR_B 304 #define ESPERAR_C 305 #define JUGANDO 306 Ticker timer; void t(); DigitalOut ledr(LED1); DigitalOut ledg(LED2); DigitalOut ledb(LED3); void GENERAL(); void MOSTRAR_LED(); void JUEGO(); void PULSADORES(); int secuencia[20]= {1,2,3,2,2,3,1,3,1,2,3,1,2,3,1,2,3}; int cant=0, finsec=0, n=0, P1=0, P2=0, P3=0; int habmostrar=0, habjug=0, fin_mostrar=0, finjug=0, perdiste=0; volatile unsigned int tiempo=100; static int traba=0, principio=0; TSIAnalogSlider tsi(ELEC0, ELEC1, 40); int main() { ledr=1; ledb=1; ledg=1; timer.attach(&t,0.01); while(1) { GENERAL(); MOSTRAR_LED(); JUEGO(); PULSADORES(); } } void GENERAL() { static int paso_a=ESPERAR_A; switch(paso_a) { case ESPERAR_A: habmostrar=0; habjug=0; fin_mostrar=0; finjug=0; perdiste=0; cant=0; principio=0; if((P1 == 1 || P2 == 1 || P3 == 1) && traba == 0) { traba=1; paso_a=MOSTRAR; principio++; printf("Inicio del juego\n\r"); } break; case MOSTRAR: habmostrar=1; finjug=0; if(fin_mostrar==1) { paso_a=ESPERO_JUG; } break; case ESPERO_JUG: habjug=1; fin_mostrar=0; if(finjug==1) { cant++; paso_a=MOSTRAR; } if(perdiste==1) { paso_a=ESPERAR_A; } break; } } void MOSTRAR_LED() { static int paso_b=ESPERAR_B; switch(paso_b) { case ESPERAR_B: if(habmostrar==1) { paso_b=MUESTREO; } break; case MUESTREO: if(finsec==0) { if (tiempo == 0) { if(cant < n) { finsec=1; } else if(secuencia[n]== 1) { ledr=0; ledg=1; ledb=1; printf("LED_ROJO\n\r"); } else if(secuencia[n]== 2) { ledr=1; ledg=0; ledb=1; printf("LED_VERDE\n\r"); } else if(secuencia[n]== 3) { ledr=1; ledg=1; ledb=0; printf("LED_AZUL\n\r"); } tiempo = 130; n++; } if(tiempo == 40) { ledr=1; ledg=1; ledb=1; } } else if(finsec==1) { ledr=1; ledg=1; ledb=1; fin_mostrar=1; habmostrar=0; paso_b=ESPERAR_B; } break; } } void JUEGO() { static int paso_c=ESPERAR_C; switch(paso_c) { case ESPERAR_C: if(habjug==1) { paso_c=JUGANDO; n=0; finsec=0; } break; case JUGANDO: if(finsec == 0) { if((P1 == 1 || P2 == 1 || P3 == 1) && traba == 0) { traba=1; if((secuencia[n] == 1 && P1 == 1) || (secuencia[n] == 2 && P2 == 1) || (secuencia[n] == 3 && P3 == 1)) { n++; } else { printf("Game Over\n\r"); perdiste=1; principio=0; habjug=0; break; } if(cant < n) { finsec=1; printf("Enhorabuena!\n\r"); } } } else if(finsec == 1) { finjug=1; habjug=0; paso_c=ESPERAR_C; } break; } } void t() { if (tiempo > 0) tiempo--; } void PULSADORES() { static int lectura=0, color=0; float valor=tsi.readPercentage(); if(tiempo == 0) { tiempo=3; if(valor != 0 && lectura == 0) { lectura=1; if(valor > 0.37 && valor < 0.73) { P2=1; } else if(valor <= 0.33) { P1=1; } else if(valor >= 0.77) { P3=1; } } else if( valor == 0 && lectura == 1) { ledr=1; ledg=1; ledb=1; traba=0; color=0; lectura=0; P1=0; P2=0; P3=0; } if(valor != 0 && principio > 0 && color == 0) { color=1; if(valor > 0.37 && valor < 0.73) { printf("Tocaste el color VERDE\n\r"); ledg=0; } else if(valor <= 0.33) { printf("Tocaste el color ROJO\n\r"); ledr=0; } else if(valor >= 0.77) { printf("Tocaste el color AZUL\n\r"); ledb=0; } } } }