Trabajo práctico 1 Ejercicio 2 SIMON Maver, Francisco Almada, Santiago
Dependencies: mbed tsi_sensor
main.cpp@0:8fc99b9ef045, 2019-06-02 (annotated)
- Committer:
- Franmaver
- Date:
- Sun Jun 02 16:51:36 2019 +0000
- Revision:
- 0:8fc99b9ef045
TP1_ejer2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Franmaver | 0:8fc99b9ef045 | 1 | #include "mbed.h" |
Franmaver | 0:8fc99b9ef045 | 2 | #include "tsi_sensor.h" |
Franmaver | 0:8fc99b9ef045 | 3 | #include "stdlib.h" |
Franmaver | 0:8fc99b9ef045 | 4 | |
Franmaver | 0:8fc99b9ef045 | 5 | /* This defines will be replaced by PinNames soon */ |
Franmaver | 0:8fc99b9ef045 | 6 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
Franmaver | 0:8fc99b9ef045 | 7 | #define ELEC0 9 |
Franmaver | 0:8fc99b9ef045 | 8 | #define ELEC1 10 |
Franmaver | 0:8fc99b9ef045 | 9 | #elif defined (TARGET_KL05Z) |
Franmaver | 0:8fc99b9ef045 | 10 | #define ELEC0 9 |
Franmaver | 0:8fc99b9ef045 | 11 | #define ELEC1 8 |
Franmaver | 0:8fc99b9ef045 | 12 | #else |
Franmaver | 0:8fc99b9ef045 | 13 | #error TARGET NOT DEFINED |
Franmaver | 0:8fc99b9ef045 | 14 | #endif |
Franmaver | 0:8fc99b9ef045 | 15 | //defino las salidas |
Franmaver | 0:8fc99b9ef045 | 16 | DigitalOut verde(LED_GREEN); |
Franmaver | 0:8fc99b9ef045 | 17 | DigitalOut azul(LED_BLUE); |
Franmaver | 0:8fc99b9ef045 | 18 | DigitalOut rojo(LED_RED); |
Franmaver | 0:8fc99b9ef045 | 19 | |
Franmaver | 0:8fc99b9ef045 | 20 | TSIAnalogSlider tsi(ELEC0, ELEC1, 40); |
Franmaver | 0:8fc99b9ef045 | 21 | |
Franmaver | 0:8fc99b9ef045 | 22 | int PULS_TSI(); |
Franmaver | 0:8fc99b9ef045 | 23 | int COLORES(); |
Franmaver | 0:8fc99b9ef045 | 24 | |
Franmaver | 0:8fc99b9ef045 | 25 | //General |
Franmaver | 0:8fc99b9ef045 | 26 | enum MAQUINA_ESTADO_GENERAL {INICIO, MUESTRO_SEC, ESPERO_SEC, APRETO, LOOSER, WIN}; |
Franmaver | 0:8fc99b9ef045 | 27 | MAQUINA_ESTADO_GENERAL MAQUINA_GENERAL; |
Franmaver | 0:8fc99b9ef045 | 28 | void FUNCION_GENERAL(); |
Franmaver | 0:8fc99b9ef045 | 29 | |
Franmaver | 0:8fc99b9ef045 | 30 | //Muestro |
Franmaver | 0:8fc99b9ef045 | 31 | enum MAQUINA_ESTADO_MUESTRO {INICIO2, ON, OFF}; |
Franmaver | 0:8fc99b9ef045 | 32 | MAQUINA_ESTADO_MUESTRO MAQUINA_MUESTRO; |
Franmaver | 0:8fc99b9ef045 | 33 | void FUNCION_MOSTRAR(); |
Franmaver | 0:8fc99b9ef045 | 34 | char paso [25]; |
Franmaver | 0:8fc99b9ef045 | 35 | int nivel_muestro = 0; |
Franmaver | 0:8fc99b9ef045 | 36 | int nivel_mostrando = 0; |
Franmaver | 0:8fc99b9ef045 | 37 | int variable = 0; |
Franmaver | 0:8fc99b9ef045 | 38 | |
Franmaver | 0:8fc99b9ef045 | 39 | //Apreto |
Franmaver | 0:8fc99b9ef045 | 40 | enum MAQUINA_ESTADO_APRETO {INICIO3, ESPERO_PULS, COMPARO_PULS, DELAY, DELAY2}; |
Franmaver | 0:8fc99b9ef045 | 41 | MAQUINA_ESTADO_APRETO MAQUINA_APRETO; |
Franmaver | 0:8fc99b9ef045 | 42 | void FUNCION_APRETO(); |
Franmaver | 0:8fc99b9ef045 | 43 | int espero_puls = 0; |
Franmaver | 0:8fc99b9ef045 | 44 | int estado_prox = 0; |
Franmaver | 0:8fc99b9ef045 | 45 | |
Franmaver | 0:8fc99b9ef045 | 46 | //tiempo |
Franmaver | 0:8fc99b9ef045 | 47 | Ticker tiempo; |
Franmaver | 0:8fc99b9ef045 | 48 | int contador = 0; |
Franmaver | 0:8fc99b9ef045 | 49 | int contador_muestro = 0; |
Franmaver | 0:8fc99b9ef045 | 50 | int contador_apreto = 0; |
Franmaver | 0:8fc99b9ef045 | 51 | int PULSADOR = 5; |
Franmaver | 0:8fc99b9ef045 | 52 | int mostrando = 0; |
Franmaver | 0:8fc99b9ef045 | 53 | int apretar = 0; |
Franmaver | 0:8fc99b9ef045 | 54 | void funcion_tiempo(); |
Franmaver | 0:8fc99b9ef045 | 55 | |
Franmaver | 0:8fc99b9ef045 | 56 | //funcion de los botones para el tsi |
Franmaver | 0:8fc99b9ef045 | 57 | int PULS_TSI() |
Franmaver | 0:8fc99b9ef045 | 58 | { |
Franmaver | 0:8fc99b9ef045 | 59 | if((tsi.readPercentage() > 0.06) && (tsi.readPercentage() < 0.2)) |
Franmaver | 0:8fc99b9ef045 | 60 | PULSADOR = 0;//0 designado para el color rojo |
Franmaver | 0:8fc99b9ef045 | 61 | else if((tsi.readPercentage() > 0.4) && (tsi.readPercentage() < 0.6)) |
Franmaver | 0:8fc99b9ef045 | 62 | PULSADOR = 1;//1 designado para el color verde |
Franmaver | 0:8fc99b9ef045 | 63 | else if((tsi.readPercentage() > 0.8) && (tsi.readPercentage() < 0.94)) |
Franmaver | 0:8fc99b9ef045 | 64 | PULSADOR = 2;//2 designado para el color azul |
Franmaver | 0:8fc99b9ef045 | 65 | else |
Franmaver | 0:8fc99b9ef045 | 66 | PULSADOR = -1;//-1 designado cuando no se oprime el TSI |
Franmaver | 0:8fc99b9ef045 | 67 | |
Franmaver | 0:8fc99b9ef045 | 68 | return PULSADOR;//me devuelve lo que aprete |
Franmaver | 0:8fc99b9ef045 | 69 | } |
Franmaver | 0:8fc99b9ef045 | 70 | //funcion que prende los leds |
Franmaver | 0:8fc99b9ef045 | 71 | void COLORES(int color) |
Franmaver | 0:8fc99b9ef045 | 72 | { |
Franmaver | 0:8fc99b9ef045 | 73 | switch(color) { |
Franmaver | 0:8fc99b9ef045 | 74 | case 0://rojo |
Franmaver | 0:8fc99b9ef045 | 75 | rojo = 0; |
Franmaver | 0:8fc99b9ef045 | 76 | verde = 1; |
Franmaver | 0:8fc99b9ef045 | 77 | azul = 1; |
Franmaver | 0:8fc99b9ef045 | 78 | break; |
Franmaver | 0:8fc99b9ef045 | 79 | case 1://verde |
Franmaver | 0:8fc99b9ef045 | 80 | rojo = 1; |
Franmaver | 0:8fc99b9ef045 | 81 | verde = 0; |
Franmaver | 0:8fc99b9ef045 | 82 | azul = 1; |
Franmaver | 0:8fc99b9ef045 | 83 | break; |
Franmaver | 0:8fc99b9ef045 | 84 | case 2://azul |
Franmaver | 0:8fc99b9ef045 | 85 | rojo = 1; |
Franmaver | 0:8fc99b9ef045 | 86 | verde = 1; |
Franmaver | 0:8fc99b9ef045 | 87 | azul = 0; |
Franmaver | 0:8fc99b9ef045 | 88 | break; |
Franmaver | 0:8fc99b9ef045 | 89 | } |
Franmaver | 0:8fc99b9ef045 | 90 | } |
Franmaver | 0:8fc99b9ef045 | 91 | |
Franmaver | 0:8fc99b9ef045 | 92 | int main(void) |
Franmaver | 0:8fc99b9ef045 | 93 | { |
Franmaver | 0:8fc99b9ef045 | 94 | //defino los leds como apagados |
Franmaver | 0:8fc99b9ef045 | 95 | verde = 1; |
Franmaver | 0:8fc99b9ef045 | 96 | azul = 1; |
Franmaver | 0:8fc99b9ef045 | 97 | rojo = 1; |
Franmaver | 0:8fc99b9ef045 | 98 | tiempo.attach(&funcion_tiempo, 0.1); |
Franmaver | 0:8fc99b9ef045 | 99 | |
Franmaver | 0:8fc99b9ef045 | 100 | while (true) { |
Franmaver | 0:8fc99b9ef045 | 101 | variable++;//variable usada para el srand |
Franmaver | 0:8fc99b9ef045 | 102 | FUNCION_GENERAL();//GENERAL |
Franmaver | 0:8fc99b9ef045 | 103 | FUNCION_MOSTRAR();//MOSTRAR |
Franmaver | 0:8fc99b9ef045 | 104 | FUNCION_APRETO();//APRETAR |
Franmaver | 0:8fc99b9ef045 | 105 | } |
Franmaver | 0:8fc99b9ef045 | 106 | } |
Franmaver | 0:8fc99b9ef045 | 107 | |
Franmaver | 0:8fc99b9ef045 | 108 | void funcion_tiempo() |
Franmaver | 0:8fc99b9ef045 | 109 | { |
Franmaver | 0:8fc99b9ef045 | 110 | contador++; |
Franmaver | 0:8fc99b9ef045 | 111 | contador_muestro++; |
Franmaver | 0:8fc99b9ef045 | 112 | contador_apreto++; |
Franmaver | 0:8fc99b9ef045 | 113 | } |
Franmaver | 0:8fc99b9ef045 | 114 | |
Franmaver | 0:8fc99b9ef045 | 115 | //GENERAL |
Franmaver | 0:8fc99b9ef045 | 116 | void FUNCION_GENERAL() |
Franmaver | 0:8fc99b9ef045 | 117 | { |
Franmaver | 0:8fc99b9ef045 | 118 | switch (MAQUINA_GENERAL) { |
Franmaver | 0:8fc99b9ef045 | 119 | |
Franmaver | 0:8fc99b9ef045 | 120 | default: |
Franmaver | 0:8fc99b9ef045 | 121 | MAQUINA_GENERAL = INICIO; |
Franmaver | 0:8fc99b9ef045 | 122 | break; |
Franmaver | 0:8fc99b9ef045 | 123 | case INICIO://igualo todas mis variables a 0 |
Franmaver | 0:8fc99b9ef045 | 124 | mostrando = 0; |
Franmaver | 0:8fc99b9ef045 | 125 | espero_puls = 0; |
Franmaver | 0:8fc99b9ef045 | 126 | nivel_muestro = 0; |
Franmaver | 0:8fc99b9ef045 | 127 | nivel_mostrando = 0; |
Franmaver | 0:8fc99b9ef045 | 128 | contador = 0; |
Franmaver | 0:8fc99b9ef045 | 129 | contador_muestro = 0; |
Franmaver | 0:8fc99b9ef045 | 130 | contador_apreto = 0; |
Franmaver | 0:8fc99b9ef045 | 131 | PULSADOR = 5; |
Franmaver | 0:8fc99b9ef045 | 132 | mostrando = 0; |
Franmaver | 0:8fc99b9ef045 | 133 | apretar = 0; |
Franmaver | 0:8fc99b9ef045 | 134 | if(tsi.readPercentage() != 0) {//oprimo TSI |
Franmaver | 0:8fc99b9ef045 | 135 | contador = 0; |
Franmaver | 0:8fc99b9ef045 | 136 | mostrando = 1; |
Franmaver | 0:8fc99b9ef045 | 137 | MAQUINA_GENERAL = MUESTRO_SEC; |
Franmaver | 0:8fc99b9ef045 | 138 | } |
Franmaver | 0:8fc99b9ef045 | 139 | break; |
Franmaver | 0:8fc99b9ef045 | 140 | case MUESTRO_SEC: |
Franmaver | 0:8fc99b9ef045 | 141 | if(mostrando == 0) {//mostrando va a ser 0 cuando en la funcion de mostrar ya mostro todo |
Franmaver | 0:8fc99b9ef045 | 142 | MAQUINA_GENERAL = ESPERO_SEC; |
Franmaver | 0:8fc99b9ef045 | 143 | apretar = 1; |
Franmaver | 0:8fc99b9ef045 | 144 | } |
Franmaver | 0:8fc99b9ef045 | 145 | break; |
Franmaver | 0:8fc99b9ef045 | 146 | case ESPERO_SEC: |
Franmaver | 0:8fc99b9ef045 | 147 | if(apretar == 0) { |
Franmaver | 0:8fc99b9ef045 | 148 | MAQUINA_GENERAL = MUESTRO_SEC; |
Franmaver | 0:8fc99b9ef045 | 149 | mostrando = 1; |
Franmaver | 0:8fc99b9ef045 | 150 | } |
Franmaver | 0:8fc99b9ef045 | 151 | break; |
Franmaver | 0:8fc99b9ef045 | 152 | case LOOSER://caso cuando perdes |
Franmaver | 0:8fc99b9ef045 | 153 | //prende salida color violeta por 2 segundos luego vuelve a inicio |
Franmaver | 0:8fc99b9ef045 | 154 | azul = 0; |
Franmaver | 0:8fc99b9ef045 | 155 | rojo = 0; |
Franmaver | 0:8fc99b9ef045 | 156 | verde = 1; |
Franmaver | 0:8fc99b9ef045 | 157 | if(contador >= 20) { |
Franmaver | 0:8fc99b9ef045 | 158 | azul = 1; |
Franmaver | 0:8fc99b9ef045 | 159 | rojo = 1; |
Franmaver | 0:8fc99b9ef045 | 160 | verde = 1; |
Franmaver | 0:8fc99b9ef045 | 161 | contador = 0; |
Franmaver | 0:8fc99b9ef045 | 162 | MAQUINA_GENERAL = INICIO; |
Franmaver | 0:8fc99b9ef045 | 163 | } |
Franmaver | 0:8fc99b9ef045 | 164 | break; |
Franmaver | 0:8fc99b9ef045 | 165 | case WIN://caso cuando ganas |
Franmaver | 0:8fc99b9ef045 | 166 | //prende salida color amarillo por 2 segundos luego vuelve a inicio |
Franmaver | 0:8fc99b9ef045 | 167 | contador = 0; |
Franmaver | 0:8fc99b9ef045 | 168 | rojo = 0; |
Franmaver | 0:8fc99b9ef045 | 169 | verde = 0; |
Franmaver | 0:8fc99b9ef045 | 170 | azul = 1; |
Franmaver | 0:8fc99b9ef045 | 171 | if(contador >= 20) { |
Franmaver | 0:8fc99b9ef045 | 172 | azul = 1; |
Franmaver | 0:8fc99b9ef045 | 173 | rojo = 1; |
Franmaver | 0:8fc99b9ef045 | 174 | verde = 1; |
Franmaver | 0:8fc99b9ef045 | 175 | contador = 0; |
Franmaver | 0:8fc99b9ef045 | 176 | MAQUINA_GENERAL = INICIO; |
Franmaver | 0:8fc99b9ef045 | 177 | } |
Franmaver | 0:8fc99b9ef045 | 178 | break; |
Franmaver | 0:8fc99b9ef045 | 179 | } |
Franmaver | 0:8fc99b9ef045 | 180 | } |
Franmaver | 0:8fc99b9ef045 | 181 | //MOSTRAR |
Franmaver | 0:8fc99b9ef045 | 182 | void FUNCION_MOSTRAR() |
Franmaver | 0:8fc99b9ef045 | 183 | { |
Franmaver | 0:8fc99b9ef045 | 184 | switch (MAQUINA_MUESTRO) { |
Franmaver | 0:8fc99b9ef045 | 185 | default: |
Franmaver | 0:8fc99b9ef045 | 186 | MAQUINA_MUESTRO = INICIO2; |
Franmaver | 0:8fc99b9ef045 | 187 | break; |
Franmaver | 0:8fc99b9ef045 | 188 | case INICIO2: |
Franmaver | 0:8fc99b9ef045 | 189 | if(mostrando == 1) { |
Franmaver | 0:8fc99b9ef045 | 190 | nivel_mostrando = 0; |
Franmaver | 0:8fc99b9ef045 | 191 | srand(variable);//como variable va a estar siempre variando, srand tomara distintas posiciones |
Franmaver | 0:8fc99b9ef045 | 192 | paso[nivel_muestro++] = (rand() % 3);//genero mi secuencia con numero al azar entre 0 y 2 |
Franmaver | 0:8fc99b9ef045 | 193 | //POR QUE NIVEL VOY (nivel muestro) |
Franmaver | 0:8fc99b9ef045 | 194 | |
Franmaver | 0:8fc99b9ef045 | 195 | if(nivel_muestro == 24) {//si llego a 24 niveles, gano |
Franmaver | 0:8fc99b9ef045 | 196 | mostrando = 0; |
Franmaver | 0:8fc99b9ef045 | 197 | MAQUINA_GENERAL = WIN; |
Franmaver | 0:8fc99b9ef045 | 198 | MAQUINA_MUESTRO = INICIO2; |
Franmaver | 0:8fc99b9ef045 | 199 | } |
Franmaver | 0:8fc99b9ef045 | 200 | contador_muestro = 0; |
Franmaver | 0:8fc99b9ef045 | 201 | MAQUINA_MUESTRO = ON; |
Franmaver | 0:8fc99b9ef045 | 202 | } |
Franmaver | 0:8fc99b9ef045 | 203 | break; |
Franmaver | 0:8fc99b9ef045 | 204 | case ON: |
Franmaver | 0:8fc99b9ef045 | 205 | COLORES(paso[nivel_mostrando]);//prendo los colores de la secuencia |
Franmaver | 0:8fc99b9ef045 | 206 | |
Franmaver | 0:8fc99b9ef045 | 207 | //CUAL ESTOY MOSTRANDO AHORA (nivel_mostrando) |
Franmaver | 0:8fc99b9ef045 | 208 | //a medida que se aumentan los niveles se disminuye el tiempo de encendido de los leds |
Franmaver | 0:8fc99b9ef045 | 209 | if (nivel_muestro <= 5) { |
Franmaver | 0:8fc99b9ef045 | 210 | if (contador_muestro >= 10) { |
Franmaver | 0:8fc99b9ef045 | 211 | contador_muestro = 0; |
Franmaver | 0:8fc99b9ef045 | 212 | MAQUINA_MUESTRO = OFF; |
Franmaver | 0:8fc99b9ef045 | 213 | } |
Franmaver | 0:8fc99b9ef045 | 214 | } |
Franmaver | 0:8fc99b9ef045 | 215 | if ((nivel_muestro > 5)&&(nivel_muestro <= 10)) { |
Franmaver | 0:8fc99b9ef045 | 216 | if (contador_muestro >= 8) { |
Franmaver | 0:8fc99b9ef045 | 217 | contador_muestro = 0; |
Franmaver | 0:8fc99b9ef045 | 218 | MAQUINA_MUESTRO = OFF; |
Franmaver | 0:8fc99b9ef045 | 219 | } |
Franmaver | 0:8fc99b9ef045 | 220 | } |
Franmaver | 0:8fc99b9ef045 | 221 | if ((nivel_muestro > 10)&&(nivel_muestro <= 15)) { |
Franmaver | 0:8fc99b9ef045 | 222 | if (contador_muestro >= 6) { |
Franmaver | 0:8fc99b9ef045 | 223 | contador_muestro = 0; |
Franmaver | 0:8fc99b9ef045 | 224 | MAQUINA_MUESTRO = OFF; |
Franmaver | 0:8fc99b9ef045 | 225 | } |
Franmaver | 0:8fc99b9ef045 | 226 | } |
Franmaver | 0:8fc99b9ef045 | 227 | if ((nivel_muestro > 15)&&(nivel_muestro <= 20)) { |
Franmaver | 0:8fc99b9ef045 | 228 | if (contador_muestro >= 10) { |
Franmaver | 0:8fc99b9ef045 | 229 | contador_muestro = 0; |
Franmaver | 0:8fc99b9ef045 | 230 | MAQUINA_MUESTRO = OFF; |
Franmaver | 0:8fc99b9ef045 | 231 | } |
Franmaver | 0:8fc99b9ef045 | 232 | } |
Franmaver | 0:8fc99b9ef045 | 233 | if ((nivel_muestro > 20)&&(nivel_muestro <= 24)) { |
Franmaver | 0:8fc99b9ef045 | 234 | if (contador_muestro >= 10) { |
Franmaver | 0:8fc99b9ef045 | 235 | contador_muestro = 0; |
Franmaver | 0:8fc99b9ef045 | 236 | MAQUINA_MUESTRO = OFF; |
Franmaver | 0:8fc99b9ef045 | 237 | } |
Franmaver | 0:8fc99b9ef045 | 238 | } |
Franmaver | 0:8fc99b9ef045 | 239 | break; |
Franmaver | 0:8fc99b9ef045 | 240 | case OFF://apago las salidas |
Franmaver | 0:8fc99b9ef045 | 241 | rojo = 1; |
Franmaver | 0:8fc99b9ef045 | 242 | verde = 1; |
Franmaver | 0:8fc99b9ef045 | 243 | azul = 1; |
Franmaver | 0:8fc99b9ef045 | 244 | if(contador_muestro >= 5) {//tiempo de espera entre led y led |
Franmaver | 0:8fc99b9ef045 | 245 | if((nivel_mostrando) == (nivel_muestro - 1)) {//si se mostraron todos los niveles |
Franmaver | 0:8fc99b9ef045 | 246 | mostrando = 0;//en la maquina general hbailita a pasar al caso de espero_sec |
Franmaver | 0:8fc99b9ef045 | 247 | MAQUINA_MUESTRO = INICIO2; |
Franmaver | 0:8fc99b9ef045 | 248 | } else {//si quedan niveles por mostrar |
Franmaver | 0:8fc99b9ef045 | 249 | nivel_mostrando++;//aumento variable para luego mostrar proximo nivel |
Franmaver | 0:8fc99b9ef045 | 250 | contador_muestro = 0; |
Franmaver | 0:8fc99b9ef045 | 251 | MAQUINA_MUESTRO = ON;//vuelvo a prender el siguiente nivel |
Franmaver | 0:8fc99b9ef045 | 252 | } |
Franmaver | 0:8fc99b9ef045 | 253 | } |
Franmaver | 0:8fc99b9ef045 | 254 | } |
Franmaver | 0:8fc99b9ef045 | 255 | } |
Franmaver | 0:8fc99b9ef045 | 256 | //APRETAR |
Franmaver | 0:8fc99b9ef045 | 257 | void FUNCION_APRETO() |
Franmaver | 0:8fc99b9ef045 | 258 | { |
Franmaver | 0:8fc99b9ef045 | 259 | switch(MAQUINA_APRETO) { |
Franmaver | 0:8fc99b9ef045 | 260 | default: |
Franmaver | 0:8fc99b9ef045 | 261 | MAQUINA_APRETO = INICIO3; |
Franmaver | 0:8fc99b9ef045 | 262 | break; |
Franmaver | 0:8fc99b9ef045 | 263 | case INICIO3: |
Franmaver | 0:8fc99b9ef045 | 264 | if(apretar == 1) {//habilitado por la maquina general cuando entro al case espero_sec |
Franmaver | 0:8fc99b9ef045 | 265 | espero_puls = 0; |
Franmaver | 0:8fc99b9ef045 | 266 | contador_apreto = 0; |
Franmaver | 0:8fc99b9ef045 | 267 | MAQUINA_APRETO = ESPERO_PULS; |
Franmaver | 0:8fc99b9ef045 | 268 | } |
Franmaver | 0:8fc99b9ef045 | 269 | break; |
Franmaver | 0:8fc99b9ef045 | 270 | case ESPERO_PULS: |
Franmaver | 0:8fc99b9ef045 | 271 | |
Franmaver | 0:8fc99b9ef045 | 272 | if(PULS_TSI() != -1) {//si oprimo el tsi |
Franmaver | 0:8fc99b9ef045 | 273 | if(PULS_TSI() == paso[espero_puls]) {//si lo oprimido es el seleccionado para el color asignado previamente |
Franmaver | 0:8fc99b9ef045 | 274 | if(espero_puls < (nivel_muestro-1)) {//si no oprimi todos los niveles |
Franmaver | 0:8fc99b9ef045 | 275 | espero_puls++;//sumo variable para apretar el proximo nivel y comparar |
Franmaver | 0:8fc99b9ef045 | 276 | contador_apreto = 0; |
Franmaver | 0:8fc99b9ef045 | 277 | MAQUINA_APRETO = DELAY;//voy al caso en el que se muestran los leds que aprete |
Franmaver | 0:8fc99b9ef045 | 278 | estado_prox = 1;//en el caso de tener que seguir apretando |
Franmaver | 0:8fc99b9ef045 | 279 | } else { |
Franmaver | 0:8fc99b9ef045 | 280 | MAQUINA_APRETO = DELAY;//voy al caso en el que se muestran los leds que aprete |
Franmaver | 0:8fc99b9ef045 | 281 | estado_prox = 2;//en el caso de no tener que apretar mas |
Franmaver | 0:8fc99b9ef045 | 282 | } |
Franmaver | 0:8fc99b9ef045 | 283 | } else {// si lo oprimido no es lo seleccionado para el color asignado previamente |
Franmaver | 0:8fc99b9ef045 | 284 | contador = 0; |
Franmaver | 0:8fc99b9ef045 | 285 | MAQUINA_GENERAL = LOOSER;//pierdo |
Franmaver | 0:8fc99b9ef045 | 286 | MAQUINA_APRETO = INICIO3; |
Franmaver | 0:8fc99b9ef045 | 287 | } |
Franmaver | 0:8fc99b9ef045 | 288 | } |
Franmaver | 0:8fc99b9ef045 | 289 | if(contador_apreto >= 30) {//si pasaron 3 segundos y no oprimi nada |
Franmaver | 0:8fc99b9ef045 | 290 | contador = 0; |
Franmaver | 0:8fc99b9ef045 | 291 | contador_apreto = 0; |
Franmaver | 0:8fc99b9ef045 | 292 | MAQUINA_GENERAL = LOOSER;//pierdo |
Franmaver | 0:8fc99b9ef045 | 293 | MAQUINA_APRETO = INICIO3; |
Franmaver | 0:8fc99b9ef045 | 294 | } |
Franmaver | 0:8fc99b9ef045 | 295 | break; |
Franmaver | 0:8fc99b9ef045 | 296 | case DELAY://caso de delay |
Franmaver | 0:8fc99b9ef045 | 297 | COLORES(PULS_TSI());//muestro los leds que oprimo con el TSI |
Franmaver | 0:8fc99b9ef045 | 298 | if(contador_apreto > 2) {//genero un tiempo de 200ms |
Franmaver | 0:8fc99b9ef045 | 299 | MAQUINA_APRETO = DELAY2;//voy al caso donde apago los leds |
Franmaver | 0:8fc99b9ef045 | 300 | contador_apreto = 0; |
Franmaver | 0:8fc99b9ef045 | 301 | } |
Franmaver | 0:8fc99b9ef045 | 302 | break; |
Franmaver | 0:8fc99b9ef045 | 303 | case DELAY2: |
Franmaver | 0:8fc99b9ef045 | 304 | //apago los leds |
Franmaver | 0:8fc99b9ef045 | 305 | rojo = 1; |
Franmaver | 0:8fc99b9ef045 | 306 | azul = 1; |
Franmaver | 0:8fc99b9ef045 | 307 | verde = 1; |
Franmaver | 0:8fc99b9ef045 | 308 | |
Franmaver | 0:8fc99b9ef045 | 309 | if(estado_prox == 1 && contador_apreto > 2) {//genero otro timepo de 200ms para poder volver a leer el TSI |
Franmaver | 0:8fc99b9ef045 | 310 | //y si tengo que seguir apretando |
Franmaver | 0:8fc99b9ef045 | 311 | MAQUINA_APRETO = ESPERO_PULS;//vuelvo al caso donde oprimo los niveles siguientes |
Franmaver | 0:8fc99b9ef045 | 312 | contador_apreto = 0; |
Franmaver | 0:8fc99b9ef045 | 313 | } else if(estado_prox == 2 && contador_apreto > 2) {//y si no tengo que apretar mas |
Franmaver | 0:8fc99b9ef045 | 314 | //y genero otro timepo de 200ms |
Franmaver | 0:8fc99b9ef045 | 315 | apretar = 0;//hbailito a quer maquina general vuelva a muestro_sec |
Franmaver | 0:8fc99b9ef045 | 316 | MAQUINA_APRETO = INICIO3; |
Franmaver | 0:8fc99b9ef045 | 317 | contador_apreto = 0; |
Franmaver | 0:8fc99b9ef045 | 318 | } |
Franmaver | 0:8fc99b9ef045 | 319 | break; |
Franmaver | 0:8fc99b9ef045 | 320 | } |
Franmaver | 0:8fc99b9ef045 | 321 | } |