Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:1afb8ee86b88, 2022-06-07 (annotated)
- Committer:
- rf4186
- Date:
- Tue Jun 07 02:27:03 2022 +0000
- Revision:
- 0:1afb8ee86b88
Ejerecicio desactiva la bomba. ; LOPEZ,MANTARAS-6B
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| rf4186 | 0:1afb8ee86b88 | 1 | #include "mbed.h" |
| rf4186 | 0:1afb8ee86b88 | 2 | #include <stdio.h> |
| rf4186 | 0:1afb8ee86b88 | 3 | |
| rf4186 | 0:1afb8ee86b88 | 4 | #define BASE_TIEMPO 0.0001 |
| rf4186 | 0:1afb8ee86b88 | 5 | |
| rf4186 | 0:1afb8ee86b88 | 6 | //Declaración de estados |
| rf4186 | 0:1afb8ee86b88 | 7 | enum{ |
| rf4186 | 0:1afb8ee86b88 | 8 | NORMAL, |
| rf4186 | 0:1afb8ee86b88 | 9 | Juego1, |
| rf4186 | 0:1afb8ee86b88 | 10 | Juego2, |
| rf4186 | 0:1afb8ee86b88 | 11 | Juego3, |
| rf4186 | 0:1afb8ee86b88 | 12 | Gano, |
| rf4186 | 0:1afb8ee86b88 | 13 | Perdio |
| rf4186 | 0:1afb8ee86b88 | 14 | }; |
| rf4186 | 0:1afb8ee86b88 | 15 | |
| rf4186 | 0:1afb8ee86b88 | 16 | //Declaración de entradas y salidas |
| rf4186 | 0:1afb8ee86b88 | 17 | DigitalIn SW(D4); |
| rf4186 | 0:1afb8ee86b88 | 18 | DigitalIn C1(PTC7); |
| rf4186 | 0:1afb8ee86b88 | 19 | DigitalIn C2(PTC0); |
| rf4186 | 0:1afb8ee86b88 | 20 | DigitalIn C3(PTC3); |
| rf4186 | 0:1afb8ee86b88 | 21 | DigitalIn C4(PTC4); |
| rf4186 | 0:1afb8ee86b88 | 22 | DigitalOut ROJO(D2); |
| rf4186 | 0:1afb8ee86b88 | 23 | DigitalOut VERDE(D3); |
| rf4186 | 0:1afb8ee86b88 | 24 | DigitalOut BUZZER(D5); |
| rf4186 | 0:1afb8ee86b88 | 25 | DigitalOut A(PTC17); |
| rf4186 | 0:1afb8ee86b88 | 26 | DigitalOut B(PTC16); |
| rf4186 | 0:1afb8ee86b88 | 27 | DigitalOut C(PTC13); |
| rf4186 | 0:1afb8ee86b88 | 28 | DigitalOut D(PTC12); |
| rf4186 | 0:1afb8ee86b88 | 29 | DigitalOut BL(D8); |
| rf4186 | 0:1afb8ee86b88 | 30 | DigitalOut DISPLAY1(D9); |
| rf4186 | 0:1afb8ee86b88 | 31 | DigitalOut DISPLAY2(D10); |
| rf4186 | 0:1afb8ee86b88 | 32 | |
| rf4186 | 0:1afb8ee86b88 | 33 | //Declaración de variables |
| rf4186 | 0:1afb8ee86b88 | 34 | Ticker tick; |
| rf4186 | 0:1afb8ee86b88 | 35 | Serial pc(USBTX, USBRX); |
| rf4186 | 0:1afb8ee86b88 | 36 | int segundos = 0 , music = 0 ,notime = 0; |
| rf4186 | 0:1afb8ee86b88 | 37 | int t = 0; |
| rf4186 | 0:1afb8ee86b88 | 38 | int E = 0; |
| rf4186 | 0:1afb8ee86b88 | 39 | int Cable = 4; |
| rf4186 | 0:1afb8ee86b88 | 40 | int MUSICA = 0; |
| rf4186 | 0:1afb8ee86b88 | 41 | int GREEN = 0 , RED = 0, BLINK = 0; |
| rf4186 | 0:1afb8ee86b88 | 42 | int valor = 0; |
| rf4186 | 0:1afb8ee86b88 | 43 | int mux_display = 0; |
| rf4186 | 0:1afb8ee86b88 | 44 | |
| rf4186 | 0:1afb8ee86b88 | 45 | //Declaración de funciones |
| rf4186 | 0:1afb8ee86b88 | 46 | void bomba(); |
| rf4186 | 0:1afb8ee86b88 | 47 | void display(int); |
| rf4186 | 0:1afb8ee86b88 | 48 | void secuencia(); |
| rf4186 | 0:1afb8ee86b88 | 49 | void Interrupt(){ |
| rf4186 | 0:1afb8ee86b88 | 50 | segundos++; |
| rf4186 | 0:1afb8ee86b88 | 51 | mux_display++; |
| rf4186 | 0:1afb8ee86b88 | 52 | music++; |
| rf4186 | 0:1afb8ee86b88 | 53 | //El buzzer modifica su oscilación dependiendo de MUSICA, siempre y cuando se encuentre en partida. |
| rf4186 | 0:1afb8ee86b88 | 54 | if(music >= 30000 - 9000*MUSICA && MUSICA >= 1 && MUSICA <= 3){ |
| rf4186 | 0:1afb8ee86b88 | 55 | BUZZER ? BUZZER = 0 : BUZZER = 1; |
| rf4186 | 0:1afb8ee86b88 | 56 | music =0; |
| rf4186 | 0:1afb8ee86b88 | 57 | }else |
| rf4186 | 0:1afb8ee86b88 | 58 | BUZZER = 0; |
| rf4186 | 0:1afb8ee86b88 | 59 | //Cada medio segundo hago oscilar los leds y el display, solo si RED o GREEN se activan |
| rf4186 | 0:1afb8ee86b88 | 60 | if(segundos == 5000 || segundos == 10000){ |
| rf4186 | 0:1afb8ee86b88 | 61 | if(GREEN) |
| rf4186 | 0:1afb8ee86b88 | 62 | VERDE ? (VERDE = 0) : (VERDE = 1); |
| rf4186 | 0:1afb8ee86b88 | 63 | else |
| rf4186 | 0:1afb8ee86b88 | 64 | VERDE = 0; |
| rf4186 | 0:1afb8ee86b88 | 65 | if(RED) |
| rf4186 | 0:1afb8ee86b88 | 66 | ROJO ? (ROJO = 0) : (ROJO = 1); |
| rf4186 | 0:1afb8ee86b88 | 67 | else |
| rf4186 | 0:1afb8ee86b88 | 68 | ROJO = 0; |
| rf4186 | 0:1afb8ee86b88 | 69 | if(BLINK) |
| rf4186 | 0:1afb8ee86b88 | 70 | BL ? (BL = 0) : (BL = 1); |
| rf4186 | 0:1afb8ee86b88 | 71 | else |
| rf4186 | 0:1afb8ee86b88 | 72 | BL = 1; |
| rf4186 | 0:1afb8ee86b88 | 73 | } |
| rf4186 | 0:1afb8ee86b88 | 74 | //Utilizo la siguiente secuencia para marcar los pasos de 1s (t) |
| rf4186 | 0:1afb8ee86b88 | 75 | if(segundos >= 10000 ){ |
| rf4186 | 0:1afb8ee86b88 | 76 | if(t > 0) |
| rf4186 | 0:1afb8ee86b88 | 77 | t--; |
| rf4186 | 0:1afb8ee86b88 | 78 | segundos = 0; |
| rf4186 | 0:1afb8ee86b88 | 79 | } |
| rf4186 | 0:1afb8ee86b88 | 80 | //Utilizo la siguiente secuencia para marcar los pasos de 1s (t) |
| rf4186 | 0:1afb8ee86b88 | 81 | if(mux_display >= 41 ){ |
| rf4186 | 0:1afb8ee86b88 | 82 | if(BLINK) |
| rf4186 | 0:1afb8ee86b88 | 83 | display(valor); |
| rf4186 | 0:1afb8ee86b88 | 84 | else |
| rf4186 | 0:1afb8ee86b88 | 85 | display(t); |
| rf4186 | 0:1afb8ee86b88 | 86 | mux_display = 0; |
| rf4186 | 0:1afb8ee86b88 | 87 | } |
| rf4186 | 0:1afb8ee86b88 | 88 | } |
| rf4186 | 0:1afb8ee86b88 | 89 | |
| rf4186 | 0:1afb8ee86b88 | 90 | int main(){ |
| rf4186 | 0:1afb8ee86b88 | 91 | tick.attach(&Interrupt , BASE_TIEMPO); |
| rf4186 | 0:1afb8ee86b88 | 92 | while(1){ |
| rf4186 | 0:1afb8ee86b88 | 93 | bomba(); |
| rf4186 | 0:1afb8ee86b88 | 94 | } |
| rf4186 | 0:1afb8ee86b88 | 95 | } |
| rf4186 | 0:1afb8ee86b88 | 96 | |
| rf4186 | 0:1afb8ee86b88 | 97 | void bomba(){ |
| rf4186 | 0:1afb8ee86b88 | 98 | static int estado = NORMAL; |
| rf4186 | 0:1afb8ee86b88 | 99 | //Declaro los estados como se diagramaron en la máquina de estados |
| rf4186 | 0:1afb8ee86b88 | 100 | switch(estado){ |
| rf4186 | 0:1afb8ee86b88 | 101 | case NORMAL: |
| rf4186 | 0:1afb8ee86b88 | 102 | if(SW.read() == 1){ |
| rf4186 | 0:1afb8ee86b88 | 103 | secuencia(); |
| rf4186 | 0:1afb8ee86b88 | 104 | estado = Juego1; |
| rf4186 | 0:1afb8ee86b88 | 105 | t = 70; |
| rf4186 | 0:1afb8ee86b88 | 106 | MUSICA = 1; |
| rf4186 | 0:1afb8ee86b88 | 107 | RED = 0; |
| rf4186 | 0:1afb8ee86b88 | 108 | GREEN = 0; |
| rf4186 | 0:1afb8ee86b88 | 109 | pc.printf("El juego esta ahora en marcha. Primeros 30s\n"); |
| rf4186 | 0:1afb8ee86b88 | 110 | } |
| rf4186 | 0:1afb8ee86b88 | 111 | break; |
| rf4186 | 0:1afb8ee86b88 | 112 | case Juego1: |
| rf4186 | 0:1afb8ee86b88 | 113 | secuencia(); |
| rf4186 | 0:1afb8ee86b88 | 114 | if(t <= 40){ |
| rf4186 | 0:1afb8ee86b88 | 115 | estado = Juego2; |
| rf4186 | 0:1afb8ee86b88 | 116 | MUSICA = 2; |
| rf4186 | 0:1afb8ee86b88 | 117 | pc.printf("La musica se intensifica\n"); |
| rf4186 | 0:1afb8ee86b88 | 118 | } |
| rf4186 | 0:1afb8ee86b88 | 119 | if(E){ |
| rf4186 | 0:1afb8ee86b88 | 120 | estado = Perdio; |
| rf4186 | 0:1afb8ee86b88 | 121 | valor = t; |
| rf4186 | 0:1afb8ee86b88 | 122 | t = 10; |
| rf4186 | 0:1afb8ee86b88 | 123 | RED = 1; |
| rf4186 | 0:1afb8ee86b88 | 124 | MUSICA = 5; |
| rf4186 | 0:1afb8ee86b88 | 125 | BLINK = 1; |
| rf4186 | 0:1afb8ee86b88 | 126 | pc.printf("Partida terminada, el jugador pierde.\n"); |
| rf4186 | 0:1afb8ee86b88 | 127 | } |
| rf4186 | 0:1afb8ee86b88 | 128 | if(Cable == 0){ |
| rf4186 | 0:1afb8ee86b88 | 129 | estado = Gano; |
| rf4186 | 0:1afb8ee86b88 | 130 | GREEN = 1; |
| rf4186 | 0:1afb8ee86b88 | 131 | MUSICA = 4; |
| rf4186 | 0:1afb8ee86b88 | 132 | BLINK = 1; |
| rf4186 | 0:1afb8ee86b88 | 133 | valor = t; |
| rf4186 | 0:1afb8ee86b88 | 134 | t = 10; |
| rf4186 | 0:1afb8ee86b88 | 135 | pc.printf("Partida terminada, el jugador gana.\n"); |
| rf4186 | 0:1afb8ee86b88 | 136 | } |
| rf4186 | 0:1afb8ee86b88 | 137 | break; |
| rf4186 | 0:1afb8ee86b88 | 138 | case Juego2: |
| rf4186 | 0:1afb8ee86b88 | 139 | secuencia(); |
| rf4186 | 0:1afb8ee86b88 | 140 | if(t <= 20){ |
| rf4186 | 0:1afb8ee86b88 | 141 | estado = Juego3; |
| rf4186 | 0:1afb8ee86b88 | 142 | MUSICA = 3; |
| rf4186 | 0:1afb8ee86b88 | 143 | pc.printf("Queda poco tiempo\n"); |
| rf4186 | 0:1afb8ee86b88 | 144 | } |
| rf4186 | 0:1afb8ee86b88 | 145 | if (E){ |
| rf4186 | 0:1afb8ee86b88 | 146 | estado = Perdio; |
| rf4186 | 0:1afb8ee86b88 | 147 | RED = 1; |
| rf4186 | 0:1afb8ee86b88 | 148 | MUSICA = 5; |
| rf4186 | 0:1afb8ee86b88 | 149 | BLINK = 1; |
| rf4186 | 0:1afb8ee86b88 | 150 | valor = t; |
| rf4186 | 0:1afb8ee86b88 | 151 | t=10; |
| rf4186 | 0:1afb8ee86b88 | 152 | pc.printf("Partida terminada, el jugador pierde.\n"); |
| rf4186 | 0:1afb8ee86b88 | 153 | } |
| rf4186 | 0:1afb8ee86b88 | 154 | if(Cable == 0){ |
| rf4186 | 0:1afb8ee86b88 | 155 | estado = Gano; |
| rf4186 | 0:1afb8ee86b88 | 156 | GREEN = 1; |
| rf4186 | 0:1afb8ee86b88 | 157 | MUSICA = 4; |
| rf4186 | 0:1afb8ee86b88 | 158 | BLINK = 1; |
| rf4186 | 0:1afb8ee86b88 | 159 | valor = t; |
| rf4186 | 0:1afb8ee86b88 | 160 | t = 10; |
| rf4186 | 0:1afb8ee86b88 | 161 | pc.printf("Partida terminada, el jugador gana.\n"); |
| rf4186 | 0:1afb8ee86b88 | 162 | } |
| rf4186 | 0:1afb8ee86b88 | 163 | break; |
| rf4186 | 0:1afb8ee86b88 | 164 | case Juego3: |
| rf4186 | 0:1afb8ee86b88 | 165 | secuencia(); |
| rf4186 | 0:1afb8ee86b88 | 166 | if(t <= 10 || E){ |
| rf4186 | 0:1afb8ee86b88 | 167 | estado = Perdio; |
| rf4186 | 0:1afb8ee86b88 | 168 | MUSICA = 5; |
| rf4186 | 0:1afb8ee86b88 | 169 | RED = 1; |
| rf4186 | 0:1afb8ee86b88 | 170 | BLINK = 1; |
| rf4186 | 0:1afb8ee86b88 | 171 | valor = t; |
| rf4186 | 0:1afb8ee86b88 | 172 | pc.printf("Partida terminada, el jugador pierde.\n"); |
| rf4186 | 0:1afb8ee86b88 | 173 | } |
| rf4186 | 0:1afb8ee86b88 | 174 | if(t <= 10) |
| rf4186 | 0:1afb8ee86b88 | 175 | notime = 1; |
| rf4186 | 0:1afb8ee86b88 | 176 | if(Cable == 0){ |
| rf4186 | 0:1afb8ee86b88 | 177 | estado = Gano; |
| rf4186 | 0:1afb8ee86b88 | 178 | GREEN = 1; |
| rf4186 | 0:1afb8ee86b88 | 179 | MUSICA = 4; |
| rf4186 | 0:1afb8ee86b88 | 180 | BLINK = 1; |
| rf4186 | 0:1afb8ee86b88 | 181 | valor = t; |
| rf4186 | 0:1afb8ee86b88 | 182 | t = 10; |
| rf4186 | 0:1afb8ee86b88 | 183 | pc.printf("Partida terminada, el jugador gana.\n"); |
| rf4186 | 0:1afb8ee86b88 | 184 | } |
| rf4186 | 0:1afb8ee86b88 | 185 | break; |
| rf4186 | 0:1afb8ee86b88 | 186 | case Gano: |
| rf4186 | 0:1afb8ee86b88 | 187 | if(t == 0){ |
| rf4186 | 0:1afb8ee86b88 | 188 | estado = NORMAL; |
| rf4186 | 0:1afb8ee86b88 | 189 | Cable = 4; |
| rf4186 | 0:1afb8ee86b88 | 190 | MUSICA = 0; |
| rf4186 | 0:1afb8ee86b88 | 191 | BLINK = 0; |
| rf4186 | 0:1afb8ee86b88 | 192 | GREEN = 0; |
| rf4186 | 0:1afb8ee86b88 | 193 | pc.printf("El juego se encuentra listo para comenzar.\n"); |
| rf4186 | 0:1afb8ee86b88 | 194 | } |
| rf4186 | 0:1afb8ee86b88 | 195 | break; |
| rf4186 | 0:1afb8ee86b88 | 196 | case Perdio: |
| rf4186 | 0:1afb8ee86b88 | 197 | if(t == 0){ |
| rf4186 | 0:1afb8ee86b88 | 198 | estado = NORMAL; |
| rf4186 | 0:1afb8ee86b88 | 199 | Cable = 4; |
| rf4186 | 0:1afb8ee86b88 | 200 | E = 0; |
| rf4186 | 0:1afb8ee86b88 | 201 | MUSICA = 0; |
| rf4186 | 0:1afb8ee86b88 | 202 | BLINK = 0; |
| rf4186 | 0:1afb8ee86b88 | 203 | RED = 0; |
| rf4186 | 0:1afb8ee86b88 | 204 | pc.printf("El juego se encuentra listo para comenzar.\n"); |
| rf4186 | 0:1afb8ee86b88 | 205 | } |
| rf4186 | 0:1afb8ee86b88 | 206 | break; |
| rf4186 | 0:1afb8ee86b88 | 207 | default: |
| rf4186 | 0:1afb8ee86b88 | 208 | estado = NORMAL; |
| rf4186 | 0:1afb8ee86b88 | 209 | } |
| rf4186 | 0:1afb8ee86b88 | 210 | } |
| rf4186 | 0:1afb8ee86b88 | 211 | |
| rf4186 | 0:1afb8ee86b88 | 212 | //Funcion de control de multiplexado |
| rf4186 | 0:1afb8ee86b88 | 213 | void display(int x){ |
| rf4186 | 0:1afb8ee86b88 | 214 | char decenas; |
| rf4186 | 0:1afb8ee86b88 | 215 | char unidades; |
| rf4186 | 0:1afb8ee86b88 | 216 | if(x > 10){ |
| rf4186 | 0:1afb8ee86b88 | 217 | decenas = (x-10)/10; |
| rf4186 | 0:1afb8ee86b88 | 218 | unidades = (x-10)%10; |
| rf4186 | 0:1afb8ee86b88 | 219 | }else{ |
| rf4186 | 0:1afb8ee86b88 | 220 | decenas = 0; |
| rf4186 | 0:1afb8ee86b88 | 221 | unidades = 0; |
| rf4186 | 0:1afb8ee86b88 | 222 | } |
| rf4186 | 0:1afb8ee86b88 | 223 | static char estado = 0; |
| rf4186 | 0:1afb8ee86b88 | 224 | //estado indica el display a utilizar. |
| rf4186 | 0:1afb8ee86b88 | 225 | //En ambos casos se toma bit a bit el número (unidad o decena) y se la inserta en el CD4511 mediante A, B, C y D |
| rf4186 | 0:1afb8ee86b88 | 226 | //Los displays se apagan por un breve momento mientras se configura el Cd4511 |
| rf4186 | 0:1afb8ee86b88 | 227 | if(estado == 0){ |
| rf4186 | 0:1afb8ee86b88 | 228 | DISPLAY2 = 0; |
| rf4186 | 0:1afb8ee86b88 | 229 | A = (decenas & 0b1000)>>3; |
| rf4186 | 0:1afb8ee86b88 | 230 | B = (decenas & 0b100)>>2; |
| rf4186 | 0:1afb8ee86b88 | 231 | C = (decenas & 0b10)>>1; |
| rf4186 | 0:1afb8ee86b88 | 232 | D = decenas & 1; |
| rf4186 | 0:1afb8ee86b88 | 233 | DISPLAY1 = 1; |
| rf4186 | 0:1afb8ee86b88 | 234 | estado = 1; |
| rf4186 | 0:1afb8ee86b88 | 235 | }else if(estado == 1){ |
| rf4186 | 0:1afb8ee86b88 | 236 | DISPLAY1 = 0; |
| rf4186 | 0:1afb8ee86b88 | 237 | A = (unidades & 0b1000)>>3; |
| rf4186 | 0:1afb8ee86b88 | 238 | B = (unidades & 0b100)>>2; |
| rf4186 | 0:1afb8ee86b88 | 239 | C = (unidades & 0b10)>>1; |
| rf4186 | 0:1afb8ee86b88 | 240 | D = unidades & 1; |
| rf4186 | 0:1afb8ee86b88 | 241 | DISPLAY2 = 1; |
| rf4186 | 0:1afb8ee86b88 | 242 | estado = 0; |
| rf4186 | 0:1afb8ee86b88 | 243 | } |
| rf4186 | 0:1afb8ee86b88 | 244 | } |
| rf4186 | 0:1afb8ee86b88 | 245 | |
| rf4186 | 0:1afb8ee86b88 | 246 | //Funcion que se encarga de modificar la secuencia y su correcto seguimiento durante la partida. |
| rf4186 | 0:1afb8ee86b88 | 247 | void secuencia(){ |
| rf4186 | 0:1afb8ee86b88 | 248 | static int flag = 0 , flagc1 = 0 , flagc2 = 0 , flagc3 = 0 , flagc4 = 0; |
| rf4186 | 0:1afb8ee86b88 | 249 | static int secuencia[4]; |
| rf4186 | 0:1afb8ee86b88 | 250 | if (flag == 0){ |
| rf4186 | 0:1afb8ee86b88 | 251 | flagc1 = 0; |
| rf4186 | 0:1afb8ee86b88 | 252 | flagc2 = 0; |
| rf4186 | 0:1afb8ee86b88 | 253 | flagc3 = 0; |
| rf4186 | 0:1afb8ee86b88 | 254 | flagc4 = 0; |
| rf4186 | 0:1afb8ee86b88 | 255 | secuencia[0]= 0; |
| rf4186 | 0:1afb8ee86b88 | 256 | secuencia[1]= 0; |
| rf4186 | 0:1afb8ee86b88 | 257 | secuencia[2]= 0; |
| rf4186 | 0:1afb8ee86b88 | 258 | secuencia[3]= 0; |
| rf4186 | 0:1afb8ee86b88 | 259 | |
| rf4186 | 0:1afb8ee86b88 | 260 | //Declaro las variables dentro de la secuencia hasta que tenga un ejemplar de cada numereo del 1 al 4 |
| rf4186 | 0:1afb8ee86b88 | 261 | for(int i = 0 ; i < 4 ;){ |
| rf4186 | 0:1afb8ee86b88 | 262 | secuencia[i] = rand() % 4 + 1; |
| rf4186 | 0:1afb8ee86b88 | 263 | for(int j = i - 1 ; j >= 0 ; j--){ |
| rf4186 | 0:1afb8ee86b88 | 264 | if (secuencia[i] == secuencia[j]){ |
| rf4186 | 0:1afb8ee86b88 | 265 | i--; |
| rf4186 | 0:1afb8ee86b88 | 266 | break; |
| rf4186 | 0:1afb8ee86b88 | 267 | } |
| rf4186 | 0:1afb8ee86b88 | 268 | } |
| rf4186 | 0:1afb8ee86b88 | 269 | i++; |
| rf4186 | 0:1afb8ee86b88 | 270 | } |
| rf4186 | 0:1afb8ee86b88 | 271 | pc.printf("LA SECUENCIA A REPRODUCIR ES %d %d %d %d\n" , secuencia[0] , secuencia[1] , secuencia[2] , secuencia[3]); |
| rf4186 | 0:1afb8ee86b88 | 272 | flag++; |
| rf4186 | 0:1afb8ee86b88 | 273 | }else{ |
| rf4186 | 0:1afb8ee86b88 | 274 | //Cada cable tiene su propio número asignado. Cuando lo desconecto |
| rf4186 | 0:1afb8ee86b88 | 275 | //ese código debe conincidir con la secuencia, de otro modo será un |
| rf4186 | 0:1afb8ee86b88 | 276 | //error. Una vez desactivado se utiliza una variable para descartarlos |
| rf4186 | 0:1afb8ee86b88 | 277 | //hatsa la proxima partida. |
| rf4186 | 0:1afb8ee86b88 | 278 | if(C1.read() == 1){ |
| rf4186 | 0:1afb8ee86b88 | 279 | if(secuencia [flag-1] == 1 && !flagc1){ |
| rf4186 | 0:1afb8ee86b88 | 280 | Cable--; |
| rf4186 | 0:1afb8ee86b88 | 281 | flag++; |
| rf4186 | 0:1afb8ee86b88 | 282 | flagc1 = 1; |
| rf4186 | 0:1afb8ee86b88 | 283 | }else if(!flagc1) |
| rf4186 | 0:1afb8ee86b88 | 284 | E = 1; |
| rf4186 | 0:1afb8ee86b88 | 285 | } |
| rf4186 | 0:1afb8ee86b88 | 286 | if(C2.read() == 1 && !flagc2){ |
| rf4186 | 0:1afb8ee86b88 | 287 | if(secuencia [flag-1] == 2){ |
| rf4186 | 0:1afb8ee86b88 | 288 | Cable--; |
| rf4186 | 0:1afb8ee86b88 | 289 | flag++; |
| rf4186 | 0:1afb8ee86b88 | 290 | flagc2 = 1; |
| rf4186 | 0:1afb8ee86b88 | 291 | }else if(!flagc2) |
| rf4186 | 0:1afb8ee86b88 | 292 | E = 1; |
| rf4186 | 0:1afb8ee86b88 | 293 | } |
| rf4186 | 0:1afb8ee86b88 | 294 | if(C3.read() == 1 && !flagc3){ |
| rf4186 | 0:1afb8ee86b88 | 295 | if(secuencia [flag-1] == 3){ |
| rf4186 | 0:1afb8ee86b88 | 296 | Cable--; |
| rf4186 | 0:1afb8ee86b88 | 297 | flag++; |
| rf4186 | 0:1afb8ee86b88 | 298 | flagc3 = 1; |
| rf4186 | 0:1afb8ee86b88 | 299 | }else if(!flagc3) |
| rf4186 | 0:1afb8ee86b88 | 300 | E = 1; |
| rf4186 | 0:1afb8ee86b88 | 301 | } |
| rf4186 | 0:1afb8ee86b88 | 302 | if(C4.read() == 1 && !flagc4){ |
| rf4186 | 0:1afb8ee86b88 | 303 | if(secuencia [flag-1] == 4){ |
| rf4186 | 0:1afb8ee86b88 | 304 | Cable--; |
| rf4186 | 0:1afb8ee86b88 | 305 | flag++; |
| rf4186 | 0:1afb8ee86b88 | 306 | flagc4 = 1; |
| rf4186 | 0:1afb8ee86b88 | 307 | }else if(!flagc4) |
| rf4186 | 0:1afb8ee86b88 | 308 | E = 1; |
| rf4186 | 0:1afb8ee86b88 | 309 | } |
| rf4186 | 0:1afb8ee86b88 | 310 | //Cuando se terina la secuencia, se comete un error o se acaba el |
| rf4186 | 0:1afb8ee86b88 | 311 | // tiempo se vuelve al primer estado flag = 0 |
| rf4186 | 0:1afb8ee86b88 | 312 | if (flag == 5 || E == 1 || notime == 1){ |
| rf4186 | 0:1afb8ee86b88 | 313 | flag = 0; |
| rf4186 | 0:1afb8ee86b88 | 314 | notime = 0; |
| rf4186 | 0:1afb8ee86b88 | 315 | } |
| rf4186 | 0:1afb8ee86b88 | 316 | } |
| rf4186 | 0:1afb8ee86b88 | 317 | } |