https://os.mbed.com/users/Jalle/code/Ejercicio2JalleVentiades/file/ad5829ebd588/main.cpp/
Dependencies: Led7Seg mbed tsi_sensor MMA8451Q
main.cpp@0:663cb45c05e2, 2019-06-23 (annotated)
- Committer:
- Jalle
- Date:
- Sun Jun 23 13:46:09 2019 +0000
- Revision:
- 0:663cb45c05e2
https://os.mbed.com/users/Jalle/code/Ejercicio2JalleVentiades/file/ad5829ebd588/main.cpp/
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jalle | 0:663cb45c05e2 | 1 | #include "mbed.h" |
Jalle | 0:663cb45c05e2 | 2 | #include "tsi_sensor.h" |
Jalle | 0:663cb45c05e2 | 3 | #include "MMA8451Q.h" |
Jalle | 0:663cb45c05e2 | 4 | #include "math.h" |
Jalle | 0:663cb45c05e2 | 5 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
Jalle | 0:663cb45c05e2 | 6 | PinName const SDA = PTE25; |
Jalle | 0:663cb45c05e2 | 7 | PinName const SCL = PTE24; |
Jalle | 0:663cb45c05e2 | 8 | #elif defined (TARGET_KL05Z) |
Jalle | 0:663cb45c05e2 | 9 | PinName const SDA = PTB4; |
Jalle | 0:663cb45c05e2 | 10 | PinName const SCL = PTB3; |
Jalle | 0:663cb45c05e2 | 11 | #elif defined (TARGET_K20D50M) |
Jalle | 0:663cb45c05e2 | 12 | PinName const SDA = PTB1; |
Jalle | 0:663cb45c05e2 | 13 | PinName const SCL = PTB0; |
Jalle | 0:663cb45c05e2 | 14 | #else |
Jalle | 0:663cb45c05e2 | 15 | #error TARGET NOT DEFINED |
Jalle | 0:663cb45c05e2 | 16 | #endif |
Jalle | 0:663cb45c05e2 | 17 | #define M_PI 3.14159265358979323846 |
Jalle | 0:663cb45c05e2 | 18 | |
Jalle | 0:663cb45c05e2 | 19 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
Jalle | 0:663cb45c05e2 | 20 | |
Jalle | 0:663cb45c05e2 | 21 | /* This defines will be replaced by PinNames soon */ |
Jalle | 0:663cb45c05e2 | 22 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
Jalle | 0:663cb45c05e2 | 23 | #define ELEC0 9 |
Jalle | 0:663cb45c05e2 | 24 | #define ELEC1 10 |
Jalle | 0:663cb45c05e2 | 25 | #elif defined (TARGET_KL05Z) |
Jalle | 0:663cb45c05e2 | 26 | #define ELEC0 9 |
Jalle | 0:663cb45c05e2 | 27 | #define ELEC1 8 |
Jalle | 0:663cb45c05e2 | 28 | #else |
Jalle | 0:663cb45c05e2 | 29 | #error TARGET NOT DEFINED |
Jalle | 0:663cb45c05e2 | 30 | #endif |
Jalle | 0:663cb45c05e2 | 31 | DigitalOut ledazul(LED_BLUE); |
Jalle | 0:663cb45c05e2 | 32 | DigitalOut ledverde(LED_GREEN); |
Jalle | 0:663cb45c05e2 | 33 | DigitalOut ledrojo(LED_RED); |
Jalle | 0:663cb45c05e2 | 34 | //unidades: |
Jalle | 0:663cb45c05e2 | 35 | |
Jalle | 0:663cb45c05e2 | 36 | |
Jalle | 0:663cb45c05e2 | 37 | BusOut display(PTC9,PTC8,PTD4,PTA12,PTA4,PTA5,PTC6); |
Jalle | 0:663cb45c05e2 | 38 | |
Jalle | 0:663cb45c05e2 | 39 | DigitalOut habuni(PTD7); |
Jalle | 0:663cb45c05e2 | 40 | DigitalOut habdec(PTD6); |
Jalle | 0:663cb45c05e2 | 41 | |
Jalle | 0:663cb45c05e2 | 42 | DigitalIn enta(PTC7); |
Jalle | 0:663cb45c05e2 | 43 | DigitalIn entb(PTC0); |
Jalle | 0:663cb45c05e2 | 44 | DigitalIn entc(PTC3); |
Jalle | 0:663cb45c05e2 | 45 | DigitalIn entd(PTC4); |
Jalle | 0:663cb45c05e2 | 46 | |
Jalle | 0:663cb45c05e2 | 47 | double a=0; |
Jalle | 0:663cb45c05e2 | 48 | unsigned int e=0,cuenta=2,cantidad=4,estado=0,mal=0,nuevo=0,erro=0,b=0,demo=0,ap=4,tiempo=20,s=0,d=0,c=0,acta=0,actb=0,actc=0,actd=0,uni=0,dec=0,bar=0,guar1=0,guar2=0; |
Jalle | 0:663cb45c05e2 | 49 | |
Jalle | 0:663cb45c05e2 | 50 | int dato[50]= {0,1,2,3}; |
Jalle | 0:663cb45c05e2 | 51 | int dato2[50]; |
Jalle | 0:663cb45c05e2 | 52 | Ticker barrido; |
Jalle | 0:663cb45c05e2 | 53 | Ticker jorge; |
Jalle | 0:663cb45c05e2 | 54 | void funcion(); |
Jalle | 0:663cb45c05e2 | 55 | void ctrl_barrido(); |
Jalle | 0:663cb45c05e2 | 56 | |
Jalle | 0:663cb45c05e2 | 57 | int main(void) |
Jalle | 0:663cb45c05e2 | 58 | { |
Jalle | 0:663cb45c05e2 | 59 | dato2[0]=126; //Guardamos en este vector la informacion para formar los diferentes numeros en el display |
Jalle | 0:663cb45c05e2 | 60 | dato2[1]=48; |
Jalle | 0:663cb45c05e2 | 61 | dato2[2]=109; |
Jalle | 0:663cb45c05e2 | 62 | dato2[3]=121; |
Jalle | 0:663cb45c05e2 | 63 | dato2[4]=51; |
Jalle | 0:663cb45c05e2 | 64 | dato2[5]=91; |
Jalle | 0:663cb45c05e2 | 65 | dato2[6]=95; |
Jalle | 0:663cb45c05e2 | 66 | dato2[7]=112; |
Jalle | 0:663cb45c05e2 | 67 | dato2[8]=127; |
Jalle | 0:663cb45c05e2 | 68 | dato2[9]=123; |
Jalle | 0:663cb45c05e2 | 69 | barrido.attach(&ctrl_barrido,0.01); //Activamos el barrido cada 10ms |
Jalle | 0:663cb45c05e2 | 70 | jorge.attach(&funcion, 1); //Cada 1seg se activará el ticker |
Jalle | 0:663cb45c05e2 | 71 | TSIAnalogSlider tsi(ELEC0, ELEC1, 100); //El slider es para iniciar el juego |
Jalle | 0:663cb45c05e2 | 72 | ledrojo=1; //Apagamos todo por las dudas |
Jalle | 0:663cb45c05e2 | 73 | ledazul=1; |
Jalle | 0:663cb45c05e2 | 74 | ledverde=1; |
Jalle | 0:663cb45c05e2 | 75 | |
Jalle | 0:663cb45c05e2 | 76 | |
Jalle | 0:663cb45c05e2 | 77 | while (true) { |
Jalle | 0:663cb45c05e2 | 78 | a=tsi.readPercentage(); |
Jalle | 0:663cb45c05e2 | 79 | ledverde=1; |
Jalle | 0:663cb45c05e2 | 80 | ledrojo=1; |
Jalle | 0:663cb45c05e2 | 81 | switch (estado) { |
Jalle | 0:663cb45c05e2 | 82 | default: |
Jalle | 0:663cb45c05e2 | 83 | case 0: |
Jalle | 0:663cb45c05e2 | 84 | |
Jalle | 0:663cb45c05e2 | 85 | |
Jalle | 0:663cb45c05e2 | 86 | if (bar==0) { //Si bar es 1 se muentra las decenas y si es 0 se muestra las unidades |
Jalle | 0:663cb45c05e2 | 87 | habuni=1; //Se definen las habilitaciones para solo mostrar las unidades |
Jalle | 0:663cb45c05e2 | 88 | habdec=0; |
Jalle | 0:663cb45c05e2 | 89 | |
Jalle | 0:663cb45c05e2 | 90 | display=dato2[dec]; //Se envia la informacion a los displyas |
Jalle | 0:663cb45c05e2 | 91 | |
Jalle | 0:663cb45c05e2 | 92 | } |
Jalle | 0:663cb45c05e2 | 93 | |
Jalle | 0:663cb45c05e2 | 94 | if(bar==1) { |
Jalle | 0:663cb45c05e2 | 95 | habuni=0; //Se definen las habilitaciones para solo mostrar las decenas |
Jalle | 0:663cb45c05e2 | 96 | habdec=1; |
Jalle | 0:663cb45c05e2 | 97 | |
Jalle | 0:663cb45c05e2 | 98 | display=dato2[dec]; //Se envia la informacion a los displyas |
Jalle | 0:663cb45c05e2 | 99 | |
Jalle | 0:663cb45c05e2 | 100 | |
Jalle | 0:663cb45c05e2 | 101 | } |
Jalle | 0:663cb45c05e2 | 102 | |
Jalle | 0:663cb45c05e2 | 103 | if(c==0) { //Aca se va a generar la secuencia aleatoria |
Jalle | 0:663cb45c05e2 | 104 | dato[0]=rand() % (1+3); |
Jalle | 0:663cb45c05e2 | 105 | dato[1]=rand() % (1+3); |
Jalle | 0:663cb45c05e2 | 106 | dato[2]=rand() % (1+3); |
Jalle | 0:663cb45c05e2 | 107 | dato[3]=rand() % (1+3); |
Jalle | 0:663cb45c05e2 | 108 | c=1; //De esta manera solo se genera 1 y no se sobrescribe todo infinitamente |
Jalle | 0:663cb45c05e2 | 109 | } |
Jalle | 0:663cb45c05e2 | 110 | |
Jalle | 0:663cb45c05e2 | 111 | if(dato[1]==dato[0]) |
Jalle | 0:663cb45c05e2 | 112 | dato[1]=rand() % (1+3); |
Jalle | 0:663cb45c05e2 | 113 | |
Jalle | 0:663cb45c05e2 | 114 | if(dato[2]==dato[1]||dato[2]==dato[0]) |
Jalle | 0:663cb45c05e2 | 115 | dato[2]=rand() % (1+3); |
Jalle | 0:663cb45c05e2 | 116 | |
Jalle | 0:663cb45c05e2 | 117 | |
Jalle | 0:663cb45c05e2 | 118 | if(dato[3]==dato[2]||dato[3]==dato[1]||dato[3]==dato[0]) |
Jalle | 0:663cb45c05e2 | 119 | dato[3]=rand() % (1+3); |
Jalle | 0:663cb45c05e2 | 120 | |
Jalle | 0:663cb45c05e2 | 121 | |
Jalle | 0:663cb45c05e2 | 122 | |
Jalle | 0:663cb45c05e2 | 123 | if(d==0&&(dato[0]+dato[1]+dato[2]+dato[3])==6) { //Muestra esto solo 1 vez y cuando ya se generó la secuencia |
Jalle | 0:663cb45c05e2 | 124 | printf("Apreta el pad para empezar\n"); |
Jalle | 0:663cb45c05e2 | 125 | d=1; |
Jalle | 0:663cb45c05e2 | 126 | } |
Jalle | 0:663cb45c05e2 | 127 | |
Jalle | 0:663cb45c05e2 | 128 | if(a>=0.4&&a<=0.6&&(dato[0]+dato[1]+dato[2]+dato[3])==6) { //Una vez que se aprieta el slider y la secuencia esta generada, podemos empezar el juego |
Jalle | 0:663cb45c05e2 | 129 | if(enta==0&&entb==0&&entc==0&&entd==0) { //Verificamos si todos los cables estan conectados |
Jalle | 0:663cb45c05e2 | 130 | estado=1; |
Jalle | 0:663cb45c05e2 | 131 | tiempo=20; //Esta variable almacena el tiempo |
Jalle | 0:663cb45c05e2 | 132 | ap=4; //AP es 4 cuando no se ha desconectado ningun cable |
Jalle | 0:663cb45c05e2 | 133 | b=0; //Esta variable se usa para llevar la cuenta de las desconexiones |
Jalle | 0:663cb45c05e2 | 134 | printf("El orden es: %d%d%d%d\n",dato[0],dato[1],dato[2],dato[3]); //Imprime en PC el orden de la secuencia |
Jalle | 0:663cb45c05e2 | 135 | acta=0; //Cada vez que se detecta una desconexion, se pone en 1 estas variables para poder ignorarlas luego de su primera deteccion |
Jalle | 0:663cb45c05e2 | 136 | actb=0; //Por eso siempre hay que volverlas a 0 antes de empezar |
Jalle | 0:663cb45c05e2 | 137 | actc=0; |
Jalle | 0:663cb45c05e2 | 138 | actd=0; |
Jalle | 0:663cb45c05e2 | 139 | } else { |
Jalle | 0:663cb45c05e2 | 140 | if(d==1) { //Solo si la secuencia ya se genero |
Jalle | 0:663cb45c05e2 | 141 | printf("Te falta conectar los cables \n"); //Aviso si no todos los cables estan conectados a gnd |
Jalle | 0:663cb45c05e2 | 142 | } |
Jalle | 0:663cb45c05e2 | 143 | } |
Jalle | 0:663cb45c05e2 | 144 | |
Jalle | 0:663cb45c05e2 | 145 | |
Jalle | 0:663cb45c05e2 | 146 | break; |
Jalle | 0:663cb45c05e2 | 147 | case 1: |
Jalle | 0:663cb45c05e2 | 148 | if(e==1) { |
Jalle | 0:663cb45c05e2 | 149 | |
Jalle | 0:663cb45c05e2 | 150 | e=0; //Volvemos 0 la variable del ticker luego de detectarla |
Jalle | 0:663cb45c05e2 | 151 | |
Jalle | 0:663cb45c05e2 | 152 | } |
Jalle | 0:663cb45c05e2 | 153 | |
Jalle | 0:663cb45c05e2 | 154 | if (bar==0) { |
Jalle | 0:663cb45c05e2 | 155 | habuni=1; |
Jalle | 0:663cb45c05e2 | 156 | habdec=0; |
Jalle | 0:663cb45c05e2 | 157 | |
Jalle | 0:663cb45c05e2 | 158 | display=dato2[dec]; |
Jalle | 0:663cb45c05e2 | 159 | |
Jalle | 0:663cb45c05e2 | 160 | } |
Jalle | 0:663cb45c05e2 | 161 | |
Jalle | 0:663cb45c05e2 | 162 | if(bar==1) { |
Jalle | 0:663cb45c05e2 | 163 | habuni=0; |
Jalle | 0:663cb45c05e2 | 164 | habdec=1; |
Jalle | 0:663cb45c05e2 | 165 | |
Jalle | 0:663cb45c05e2 | 166 | display=dato2[dec]; |
Jalle | 0:663cb45c05e2 | 167 | |
Jalle | 0:663cb45c05e2 | 168 | |
Jalle | 0:663cb45c05e2 | 169 | } |
Jalle | 0:663cb45c05e2 | 170 | |
Jalle | 0:663cb45c05e2 | 171 | if(enta==1&&acta==0) { //Si se desconecta el cable 1 ponemos AP en su valor correspondiente y colocamos a acta en 1 para ignorar a enta |
Jalle | 0:663cb45c05e2 | 172 | |
Jalle | 0:663cb45c05e2 | 173 | ap=0; |
Jalle | 0:663cb45c05e2 | 174 | acta=1; |
Jalle | 0:663cb45c05e2 | 175 | |
Jalle | 0:663cb45c05e2 | 176 | } |
Jalle | 0:663cb45c05e2 | 177 | if(entb==1&&actb==0) { |
Jalle | 0:663cb45c05e2 | 178 | |
Jalle | 0:663cb45c05e2 | 179 | ap=1; //Se guarda en AP el cable que fue desconectado |
Jalle | 0:663cb45c05e2 | 180 | actb=1; |
Jalle | 0:663cb45c05e2 | 181 | |
Jalle | 0:663cb45c05e2 | 182 | } |
Jalle | 0:663cb45c05e2 | 183 | if(entc==1&&actc==0) { |
Jalle | 0:663cb45c05e2 | 184 | |
Jalle | 0:663cb45c05e2 | 185 | ap=2; |
Jalle | 0:663cb45c05e2 | 186 | actc=1; |
Jalle | 0:663cb45c05e2 | 187 | |
Jalle | 0:663cb45c05e2 | 188 | } |
Jalle | 0:663cb45c05e2 | 189 | if(entd==1&&actd==0) { |
Jalle | 0:663cb45c05e2 | 190 | |
Jalle | 0:663cb45c05e2 | 191 | ap=3; |
Jalle | 0:663cb45c05e2 | 192 | actd=1; |
Jalle | 0:663cb45c05e2 | 193 | |
Jalle | 0:663cb45c05e2 | 194 | |
Jalle | 0:663cb45c05e2 | 195 | } |
Jalle | 0:663cb45c05e2 | 196 | |
Jalle | 0:663cb45c05e2 | 197 | if(ap!=4) { //Si se desconecta algun cable entramos aca |
Jalle | 0:663cb45c05e2 | 198 | if(ap==dato[b]) { //Si es correcto, avanzamos |
Jalle | 0:663cb45c05e2 | 199 | b++; //Sumamos 1 a la variable que lleva la cuenta de las desconexiones |
Jalle | 0:663cb45c05e2 | 200 | |
Jalle | 0:663cb45c05e2 | 201 | |
Jalle | 0:663cb45c05e2 | 202 | |
Jalle | 0:663cb45c05e2 | 203 | ap=4; //Ponemos AP en 4 otra vez porque ya vimos al cable que se desconecto |
Jalle | 0:663cb45c05e2 | 204 | if(b==4) { //Si b es 4 significa que se desconectaron los 4 cables en el orden correcto, asi que vamos al estado 4 |
Jalle | 0:663cb45c05e2 | 205 | estado=4; |
Jalle | 0:663cb45c05e2 | 206 | tiempo=9; //Fijamos el tiempo que va a estar el led verde titilando |
Jalle | 0:663cb45c05e2 | 207 | ledverde=0; //Prendemos el led verde como felicitacion |
Jalle | 0:663cb45c05e2 | 208 | e=0; //Colocamos en 0 la variable del ticker por las dudas |
Jalle | 0:663cb45c05e2 | 209 | b=0; //Volvemos a 0 la cuenta de posiciones |
Jalle | 0:663cb45c05e2 | 210 | |
Jalle | 0:663cb45c05e2 | 211 | |
Jalle | 0:663cb45c05e2 | 212 | } |
Jalle | 0:663cb45c05e2 | 213 | c=0; //Ponemos c en 0 para que se pueda generar otra secuencia aleatoria |
Jalle | 0:663cb45c05e2 | 214 | d=0; //Ponemos d en 0 para que se pueda mostrar un printf del case 0 |
Jalle | 0:663cb45c05e2 | 215 | |
Jalle | 0:663cb45c05e2 | 216 | |
Jalle | 0:663cb45c05e2 | 217 | |
Jalle | 0:663cb45c05e2 | 218 | } else { |
Jalle | 0:663cb45c05e2 | 219 | //Si el dato es incorrecto explota la bomba |
Jalle | 0:663cb45c05e2 | 220 | estado=3; |
Jalle | 0:663cb45c05e2 | 221 | tiempo=9; |
Jalle | 0:663cb45c05e2 | 222 | |
Jalle | 0:663cb45c05e2 | 223 | e=0; |
Jalle | 0:663cb45c05e2 | 224 | b=0; |
Jalle | 0:663cb45c05e2 | 225 | ledverde=1; |
Jalle | 0:663cb45c05e2 | 226 | ledrojo=0; //Prendemos el led rojo de alarma |
Jalle | 0:663cb45c05e2 | 227 | } |
Jalle | 0:663cb45c05e2 | 228 | } |
Jalle | 0:663cb45c05e2 | 229 | |
Jalle | 0:663cb45c05e2 | 230 | |
Jalle | 0:663cb45c05e2 | 231 | if(tiempo==0) { //Si el tiempo se termina tambien se pierde |
Jalle | 0:663cb45c05e2 | 232 | guar1=0; |
Jalle | 0:663cb45c05e2 | 233 | guar2=0; |
Jalle | 0:663cb45c05e2 | 234 | dec=0; |
Jalle | 0:663cb45c05e2 | 235 | estado=3; |
Jalle | 0:663cb45c05e2 | 236 | tiempo=9; |
Jalle | 0:663cb45c05e2 | 237 | ledrojo=0; |
Jalle | 0:663cb45c05e2 | 238 | ledverde=1; |
Jalle | 0:663cb45c05e2 | 239 | e=0; |
Jalle | 0:663cb45c05e2 | 240 | b=0; |
Jalle | 0:663cb45c05e2 | 241 | |
Jalle | 0:663cb45c05e2 | 242 | } |
Jalle | 0:663cb45c05e2 | 243 | |
Jalle | 0:663cb45c05e2 | 244 | break; |
Jalle | 0:663cb45c05e2 | 245 | |
Jalle | 0:663cb45c05e2 | 246 | |
Jalle | 0:663cb45c05e2 | 247 | |
Jalle | 0:663cb45c05e2 | 248 | |
Jalle | 0:663cb45c05e2 | 249 | case 3: |
Jalle | 0:663cb45c05e2 | 250 | ledverde=1; |
Jalle | 0:663cb45c05e2 | 251 | |
Jalle | 0:663cb45c05e2 | 252 | if(tiempo%2==0) { //El led rojo y los displays titilan |
Jalle | 0:663cb45c05e2 | 253 | habuni=0; |
Jalle | 0:663cb45c05e2 | 254 | habdec=0; |
Jalle | 0:663cb45c05e2 | 255 | |
Jalle | 0:663cb45c05e2 | 256 | ledrojo=1; |
Jalle | 0:663cb45c05e2 | 257 | |
Jalle | 0:663cb45c05e2 | 258 | s=0; |
Jalle | 0:663cb45c05e2 | 259 | } else { |
Jalle | 0:663cb45c05e2 | 260 | if (bar==0) { |
Jalle | 0:663cb45c05e2 | 261 | habuni=1; |
Jalle | 0:663cb45c05e2 | 262 | habdec=0; |
Jalle | 0:663cb45c05e2 | 263 | |
Jalle | 0:663cb45c05e2 | 264 | display=dato2[dec]; |
Jalle | 0:663cb45c05e2 | 265 | |
Jalle | 0:663cb45c05e2 | 266 | } |
Jalle | 0:663cb45c05e2 | 267 | |
Jalle | 0:663cb45c05e2 | 268 | if(bar==1) { |
Jalle | 0:663cb45c05e2 | 269 | habuni=0; |
Jalle | 0:663cb45c05e2 | 270 | habdec=1; |
Jalle | 0:663cb45c05e2 | 271 | |
Jalle | 0:663cb45c05e2 | 272 | display=dato2[dec]; |
Jalle | 0:663cb45c05e2 | 273 | |
Jalle | 0:663cb45c05e2 | 274 | |
Jalle | 0:663cb45c05e2 | 275 | } |
Jalle | 0:663cb45c05e2 | 276 | ledrojo=0; |
Jalle | 0:663cb45c05e2 | 277 | |
Jalle | 0:663cb45c05e2 | 278 | s=1; |
Jalle | 0:663cb45c05e2 | 279 | } |
Jalle | 0:663cb45c05e2 | 280 | |
Jalle | 0:663cb45c05e2 | 281 | |
Jalle | 0:663cb45c05e2 | 282 | if(tiempo==0) { //Cuando ya titilaron el tiempo completo, volvemos a empezar en el estado 0 |
Jalle | 0:663cb45c05e2 | 283 | estado=0; |
Jalle | 0:663cb45c05e2 | 284 | d=0; |
Jalle | 0:663cb45c05e2 | 285 | c=0; |
Jalle | 0:663cb45c05e2 | 286 | } |
Jalle | 0:663cb45c05e2 | 287 | break; |
Jalle | 0:663cb45c05e2 | 288 | |
Jalle | 0:663cb45c05e2 | 289 | |
Jalle | 0:663cb45c05e2 | 290 | case 4: |
Jalle | 0:663cb45c05e2 | 291 | ledrojo=1; |
Jalle | 0:663cb45c05e2 | 292 | if(tiempo%2==0) { //El led verde y los displays titilan porque evitamos que la bomba explote |
Jalle | 0:663cb45c05e2 | 293 | habuni=0; |
Jalle | 0:663cb45c05e2 | 294 | habdec=0; |
Jalle | 0:663cb45c05e2 | 295 | ledverde=1; |
Jalle | 0:663cb45c05e2 | 296 | |
Jalle | 0:663cb45c05e2 | 297 | s=0; |
Jalle | 0:663cb45c05e2 | 298 | } else { |
Jalle | 0:663cb45c05e2 | 299 | if (bar==0) { |
Jalle | 0:663cb45c05e2 | 300 | habuni=1; |
Jalle | 0:663cb45c05e2 | 301 | habdec=0; |
Jalle | 0:663cb45c05e2 | 302 | |
Jalle | 0:663cb45c05e2 | 303 | display=dato2[dec]; |
Jalle | 0:663cb45c05e2 | 304 | |
Jalle | 0:663cb45c05e2 | 305 | } |
Jalle | 0:663cb45c05e2 | 306 | |
Jalle | 0:663cb45c05e2 | 307 | if(bar==1) { |
Jalle | 0:663cb45c05e2 | 308 | habuni=0; |
Jalle | 0:663cb45c05e2 | 309 | habdec=1; |
Jalle | 0:663cb45c05e2 | 310 | display=dato2[dec]; |
Jalle | 0:663cb45c05e2 | 311 | |
Jalle | 0:663cb45c05e2 | 312 | } |
Jalle | 0:663cb45c05e2 | 313 | |
Jalle | 0:663cb45c05e2 | 314 | ledverde=0; |
Jalle | 0:663cb45c05e2 | 315 | |
Jalle | 0:663cb45c05e2 | 316 | s=1; |
Jalle | 0:663cb45c05e2 | 317 | |
Jalle | 0:663cb45c05e2 | 318 | } |
Jalle | 0:663cb45c05e2 | 319 | e=0; |
Jalle | 0:663cb45c05e2 | 320 | if(tiempo==0) { //Volvemos a empezar luego de terminar este juego |
Jalle | 0:663cb45c05e2 | 321 | estado=0; |
Jalle | 0:663cb45c05e2 | 322 | c=0; |
Jalle | 0:663cb45c05e2 | 323 | d=0; |
Jalle | 0:663cb45c05e2 | 324 | } |
Jalle | 0:663cb45c05e2 | 325 | break; |
Jalle | 0:663cb45c05e2 | 326 | } |
Jalle | 0:663cb45c05e2 | 327 | } |
Jalle | 0:663cb45c05e2 | 328 | } |
Jalle | 0:663cb45c05e2 | 329 | } |
Jalle | 0:663cb45c05e2 | 330 | |
Jalle | 0:663cb45c05e2 | 331 | void ctrl_barrido() |
Jalle | 0:663cb45c05e2 | 332 | { |
Jalle | 0:663cb45c05e2 | 333 | |
Jalle | 0:663cb45c05e2 | 334 | if(bar==0) { //Si bar es 1 se muentra las decenas y si es 0 se muestra las unidades |
Jalle | 0:663cb45c05e2 | 335 | bar=1; |
Jalle | 0:663cb45c05e2 | 336 | |
Jalle | 0:663cb45c05e2 | 337 | |
Jalle | 0:663cb45c05e2 | 338 | if(estado!=3&&estado!=4) { //Solo se cumple si no estamos en el estado de perder o ganar |
Jalle | 0:663cb45c05e2 | 339 | dec=tiempo/10; //Obtenemos el valor de las decenas |
Jalle | 0:663cb45c05e2 | 340 | guar1=dec; |
Jalle | 0:663cb45c05e2 | 341 | } else |
Jalle | 0:663cb45c05e2 | 342 | dec=guar1; //Si estamos en perder o ganar, solo nos importa el ultimo valor antes de que el juego termine |
Jalle | 0:663cb45c05e2 | 343 | |
Jalle | 0:663cb45c05e2 | 344 | if(estado==0) //Si estamos en el estado de inicio los displays tienen que mostrar solo el numero inicial |
Jalle | 0:663cb45c05e2 | 345 | dec=2; |
Jalle | 0:663cb45c05e2 | 346 | |
Jalle | 0:663cb45c05e2 | 347 | |
Jalle | 0:663cb45c05e2 | 348 | } |
Jalle | 0:663cb45c05e2 | 349 | |
Jalle | 0:663cb45c05e2 | 350 | else { |
Jalle | 0:663cb45c05e2 | 351 | bar=0; |
Jalle | 0:663cb45c05e2 | 352 | |
Jalle | 0:663cb45c05e2 | 353 | |
Jalle | 0:663cb45c05e2 | 354 | if(estado!=3&&estado!=4) { |
Jalle | 0:663cb45c05e2 | 355 | dec=tiempo-(dec*10); //Obtenemos el valor de las unidades |
Jalle | 0:663cb45c05e2 | 356 | guar2=dec; |
Jalle | 0:663cb45c05e2 | 357 | } else |
Jalle | 0:663cb45c05e2 | 358 | dec=guar2; //Si estamos en perder o ganar, solo nos importa el ultimo valor antes de que el juego termine |
Jalle | 0:663cb45c05e2 | 359 | |
Jalle | 0:663cb45c05e2 | 360 | if(estado==0)//Si estamos en el estado de inicio los displays tienen que mostrar solo el numero inicial |
Jalle | 0:663cb45c05e2 | 361 | dec=0; |
Jalle | 0:663cb45c05e2 | 362 | } |
Jalle | 0:663cb45c05e2 | 363 | |
Jalle | 0:663cb45c05e2 | 364 | } |
Jalle | 0:663cb45c05e2 | 365 | |
Jalle | 0:663cb45c05e2 | 366 | void funcion() |
Jalle | 0:663cb45c05e2 | 367 | { |
Jalle | 0:663cb45c05e2 | 368 | |
Jalle | 0:663cb45c05e2 | 369 | tiempo--; //Cada 1seg se decrece la variable tiempo |
Jalle | 0:663cb45c05e2 | 370 | e=1; //Cada 1seg se pone e en 1 |
Jalle | 0:663cb45c05e2 | 371 | |
Jalle | 0:663cb45c05e2 | 372 | } |