Bomba

Dependencies:   mbed

Committer:
Jumaroag
Date:
Fri Jun 21 02:55:49 2019 +0000
Revision:
0:d570b80c224b
Ejer03

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jumaroag 0:d570b80c224b 1 #include "mbed.h"
Jumaroag 0:d570b80c224b 2
Jumaroag 0:d570b80c224b 3 //Defines maquinas de estados
Jumaroag 0:d570b80c224b 4 #define Esperando_Inicio 0
Jumaroag 0:d570b80c224b 5 #define Codigo 1
Jumaroag 0:d570b80c224b 6 #define Esperando_Desactivacion 2
Jumaroag 0:d570b80c224b 7 #define Comparacion_Codigo 3
Jumaroag 0:d570b80c224b 8 #define Termino 4
Jumaroag 0:d570b80c224b 9 #define Control_Tiempo 5
Jumaroag 0:d570b80c224b 10
Jumaroag 0:d570b80c224b 11 //Entradas Digitales
Jumaroag 0:d570b80c224b 12 DigitalIn Cable_0(PTE5);
Jumaroag 0:d570b80c224b 13 DigitalIn Cable_1(PTE4);
Jumaroag 0:d570b80c224b 14 DigitalIn Cable_2(PTE3);
Jumaroag 0:d570b80c224b 15 DigitalIn Cable_3(PTE2);
Jumaroag 0:d570b80c224b 16 DigitalIn Pulsador(PTB11);
Jumaroag 0:d570b80c224b 17
Jumaroag 0:d570b80c224b 18 //Salidas Digitales
Jumaroag 0:d570b80c224b 19 DigitalOut Segmento_A(PTC7);
Jumaroag 0:d570b80c224b 20 DigitalOut Segmento_B(PTC0);
Jumaroag 0:d570b80c224b 21 DigitalOut Segmento_C(PTC3);
Jumaroag 0:d570b80c224b 22 DigitalOut Segmento_D(PTC4);
Jumaroag 0:d570b80c224b 23 DigitalOut Segmento_E(PTC5);
Jumaroag 0:d570b80c224b 24 DigitalOut Segmento_F(PTC6);
Jumaroag 0:d570b80c224b 25 DigitalOut Segmento_G(PTC10);
Jumaroag 0:d570b80c224b 26 DigitalOut Habilitacion_Decenas(PTA4);
Jumaroag 0:d570b80c224b 27 DigitalOut Habilitacion_Unidades(PTA12);
Jumaroag 0:d570b80c224b 28
Jumaroag 0:d570b80c224b 29 DigitalOut led_verde(LED_GREEN);
Jumaroag 0:d570b80c224b 30 DigitalOut led_rojo(LED_RED);
Jumaroag 0:d570b80c224b 31
Jumaroag 0:d570b80c224b 32 //Variables
Jumaroag 0:d570b80c224b 33 unsigned char combinacion[4],Estado_General=Esperando_Inicio,tiempo_rebote=0,a=0;
Jumaroag 0:d570b80c224b 34 unsigned char estado_mostrar=0,decena=0,unidad=0,tiempo_decenas=0,tiempo_unidades=0,tiempo_exploto=0,b=0,flag=0,hab_parpadeo=0,estado_anterior=0;//display
Jumaroag 0:d570b80c224b 35 unsigned char n;//Tiempo regresivo
Jumaroag 0:d570b80c224b 36
Jumaroag 0:d570b80c224b 37 //Ticker y sus funciones
Jumaroag 0:d570b80c224b 38 Ticker T_rebote,tiempo,barrido;
Jumaroag 0:d570b80c224b 39
Jumaroag 0:d570b80c224b 40 void anti_rebote(void);
Jumaroag 0:d570b80c224b 41 void tiempito(void);
Jumaroag 0:d570b80c224b 42 void parpadeo(void);
Jumaroag 0:d570b80c224b 43 void tiempo_barrido(void);
Jumaroag 0:d570b80c224b 44
Jumaroag 0:d570b80c224b 45 //Funciones
Jumaroag 0:d570b80c224b 46 void mostrar(unsigned char n);//Funcion que muestra por los displays el nro que le pases
Jumaroag 0:d570b80c224b 47 int main()
Jumaroag 0:d570b80c224b 48 {
Jumaroag 0:d570b80c224b 49 //Habilito PullUp interno para los cables y el pulsador
Jumaroag 0:d570b80c224b 50 Cable_0.mode(PullUp);
Jumaroag 0:d570b80c224b 51 Cable_1.mode(PullUp);
Jumaroag 0:d570b80c224b 52 Cable_2.mode(PullUp);
Jumaroag 0:d570b80c224b 53 Cable_3.mode(PullUp);
Jumaroag 0:d570b80c224b 54 Pulsador.mode(PullUp);
Jumaroag 0:d570b80c224b 55
Jumaroag 0:d570b80c224b 56 T_rebote.attach(&anti_rebote, 0.1);//Inicio timmer 1ms
Jumaroag 0:d570b80c224b 57 barrido.attach(&tiempo_barrido, 0.01);//inciio timmer para barrido de displays
Jumaroag 0:d570b80c224b 58
Jumaroag 0:d570b80c224b 59 unsigned char codigo[4],for_a=0,antirebote_pulsador=0,antirebote_cables=0,antiprintf=0,habilitacion_pulsador=0;
Jumaroag 0:d570b80c224b 60 unsigned char hab_cable_3=0,hab_cable_2=0,hab_cable_1=0,hab_cable_0=0;
Jumaroag 0:d570b80c224b 61
Jumaroag 0:d570b80c224b 62 led_verde=1;
Jumaroag 0:d570b80c224b 63 led_rojo=1;
Jumaroag 0:d570b80c224b 64
Jumaroag 0:d570b80c224b 65 printf("-----Juego de la Bomba-----\n");//Introduccion al juego
Jumaroag 0:d570b80c224b 66 while(1)
Jumaroag 0:d570b80c224b 67 {
Jumaroag 0:d570b80c224b 68 switch (Estado_General)//Maquina de estados General del programa
Jumaroag 0:d570b80c224b 69 {
Jumaroag 0:d570b80c224b 70 default:
Jumaroag 0:d570b80c224b 71
Jumaroag 0:d570b80c224b 72 case Esperando_Inicio://Se espera a que se active el juego
Jumaroag 0:d570b80c224b 73 hab_cable_3=0;
Jumaroag 0:d570b80c224b 74 hab_cable_2=0;
Jumaroag 0:d570b80c224b 75 hab_cable_1=0;
Jumaroag 0:d570b80c224b 76 hab_cable_0=0;
Jumaroag 0:d570b80c224b 77 led_verde=0;//Enciendo el led verde
Jumaroag 0:d570b80c224b 78 led_rojo=1;
Jumaroag 0:d570b80c224b 79 n=20;//Seteo el tiempo
Jumaroag 0:d570b80c224b 80 mostrar(n);
Jumaroag 0:d570b80c224b 81 for(a=0;a<4;a++)
Jumaroag 0:d570b80c224b 82 {
Jumaroag 0:d570b80c224b 83 combinacion[a]=0;
Jumaroag 0:d570b80c224b 84 }
Jumaroag 0:d570b80c224b 85 a=0;
Jumaroag 0:d570b80c224b 86 antirebote_cables=0;
Jumaroag 0:d570b80c224b 87 while(antiprintf==0)
Jumaroag 0:d570b80c224b 88 {
Jumaroag 0:d570b80c224b 89 printf("Pulse para iniciar\n");
Jumaroag 0:d570b80c224b 90 antiprintf=1;
Jumaroag 0:d570b80c224b 91 tiempo.detach();//reinicio los timmers
Jumaroag 0:d570b80c224b 92 }
Jumaroag 0:d570b80c224b 93
Jumaroag 0:d570b80c224b 94 //Boton INICIO - si lo pulso incia el juego y cambio de estdado
Jumaroag 0:d570b80c224b 95 if(Pulsador==0 && antirebote_pulsador==0 && habilitacion_pulsador==1)
Jumaroag 0:d570b80c224b 96 {
Jumaroag 0:d570b80c224b 97 tiempo_rebote=0;
Jumaroag 0:d570b80c224b 98 antirebote_pulsador=1;
Jumaroag 0:d570b80c224b 99 }
Jumaroag 0:d570b80c224b 100 if(tiempo_rebote==1 && Pulsador==0 && habilitacion_pulsador==1)
Jumaroag 0:d570b80c224b 101 {
Jumaroag 0:d570b80c224b 102 Estado_General=Codigo;//Cambio de estado
Jumaroag 0:d570b80c224b 103 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 104 antiprintf=0;
Jumaroag 0:d570b80c224b 105 led_verde=1;
Jumaroag 0:d570b80c224b 106 habilitacion_pulsador=0;
Jumaroag 0:d570b80c224b 107 }
Jumaroag 0:d570b80c224b 108 if(tiempo_rebote==1 && Pulsador==1 && habilitacion_pulsador==1)
Jumaroag 0:d570b80c224b 109 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 110
Jumaroag 0:d570b80c224b 111 if(Pulsador==1 && antirebote_pulsador==0)
Jumaroag 0:d570b80c224b 112 {
Jumaroag 0:d570b80c224b 113 tiempo_rebote=0;
Jumaroag 0:d570b80c224b 114 antirebote_pulsador=1;
Jumaroag 0:d570b80c224b 115 }
Jumaroag 0:d570b80c224b 116 if(tiempo_rebote==1 && Pulsador==1)
Jumaroag 0:d570b80c224b 117 {
Jumaroag 0:d570b80c224b 118 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 119 habilitacion_pulsador=1;
Jumaroag 0:d570b80c224b 120 }
Jumaroag 0:d570b80c224b 121 if(tiempo_rebote==1 && Pulsador==0)
Jumaroag 0:d570b80c224b 122 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 123 break;
Jumaroag 0:d570b80c224b 124
Jumaroag 0:d570b80c224b 125 case Codigo://Se genera el codigo de desactivacion y se imprime
Jumaroag 0:d570b80c224b 126 mostrar(n);
Jumaroag 0:d570b80c224b 127 printf("-El CODIGO es: ");
Jumaroag 0:d570b80c224b 128 codigo[0]=rand()%4+1;
Jumaroag 0:d570b80c224b 129 do//Genero un codigo aleatorio de 4 digitos entre 1 y 4 sin repetir
Jumaroag 0:d570b80c224b 130 {
Jumaroag 0:d570b80c224b 131 codigo[1]=rand()%4+1;
Jumaroag 0:d570b80c224b 132 }
Jumaroag 0:d570b80c224b 133 while(codigo[0]==codigo[1]);
Jumaroag 0:d570b80c224b 134 do
Jumaroag 0:d570b80c224b 135 {
Jumaroag 0:d570b80c224b 136 codigo[2]=rand()%4+1;
Jumaroag 0:d570b80c224b 137 }
Jumaroag 0:d570b80c224b 138 while((codigo[0]==codigo[2]) || (codigo[1]==codigo[2]));
Jumaroag 0:d570b80c224b 139 do
Jumaroag 0:d570b80c224b 140 {
Jumaroag 0:d570b80c224b 141 codigo[3]=rand()%4+1;
Jumaroag 0:d570b80c224b 142 }
Jumaroag 0:d570b80c224b 143 while((codigo[0]==codigo[3]) || (codigo[1]==codigo[3]) || (codigo[2]==codigo[3]));
Jumaroag 0:d570b80c224b 144 for(for_a=0;for_a<4;for_a++)
Jumaroag 0:d570b80c224b 145 {
Jumaroag 0:d570b80c224b 146 printf("%i",codigo[for_a]);
Jumaroag 0:d570b80c224b 147 if(for_a==3)
Jumaroag 0:d570b80c224b 148 printf("\n");
Jumaroag 0:d570b80c224b 149 }
Jumaroag 0:d570b80c224b 150 Estado_General=Esperando_Desactivacion;//Una vez generado el codigo cambio de estado
Jumaroag 0:d570b80c224b 151 tiempo.attach(&tiempito, 1);//Inicia la cuenta regresiva
Jumaroag 0:d570b80c224b 152 break;
Jumaroag 0:d570b80c224b 153
Jumaroag 0:d570b80c224b 154 case Esperando_Desactivacion://Se desactiva la bomba
Jumaroag 0:d570b80c224b 155 mostrar(n);
Jumaroag 0:d570b80c224b 156 //Cable 0
Jumaroag 0:d570b80c224b 157 if(Cable_0==1 && antirebote_cables==0 && hab_cable_0==0)
Jumaroag 0:d570b80c224b 158 {
Jumaroag 0:d570b80c224b 159 tiempo_rebote=0;
Jumaroag 0:d570b80c224b 160 antirebote_cables=1;
Jumaroag 0:d570b80c224b 161 hab_cable_0=1;
Jumaroag 0:d570b80c224b 162 }
Jumaroag 0:d570b80c224b 163 if(Cable_0==1 && antirebote_cables==1 && tiempo_rebote==1)
Jumaroag 0:d570b80c224b 164 {
Jumaroag 0:d570b80c224b 165 combinacion[a]=1;
Jumaroag 0:d570b80c224b 166 Estado_General=Comparacion_Codigo;
Jumaroag 0:d570b80c224b 167 a++;
Jumaroag 0:d570b80c224b 168 antirebote_cables=0;
Jumaroag 0:d570b80c224b 169 }
Jumaroag 0:d570b80c224b 170 if(Cable_0==0 && antirebote_cables==1 && tiempo_rebote==1)
Jumaroag 0:d570b80c224b 171 {
Jumaroag 0:d570b80c224b 172 antirebote_cables=0;
Jumaroag 0:d570b80c224b 173 hab_cable_0=0;
Jumaroag 0:d570b80c224b 174 }
Jumaroag 0:d570b80c224b 175 //Cable 1
Jumaroag 0:d570b80c224b 176 if(Cable_1==1 && antirebote_cables==0 && hab_cable_1==0)
Jumaroag 0:d570b80c224b 177 {
Jumaroag 0:d570b80c224b 178 tiempo_rebote=0;
Jumaroag 0:d570b80c224b 179 antirebote_cables=2;
Jumaroag 0:d570b80c224b 180 hab_cable_1=1;
Jumaroag 0:d570b80c224b 181 }
Jumaroag 0:d570b80c224b 182 if(Cable_1==1 && antirebote_cables==2 && tiempo_rebote==1)
Jumaroag 0:d570b80c224b 183 {
Jumaroag 0:d570b80c224b 184 combinacion[a]=2;
Jumaroag 0:d570b80c224b 185 Estado_General=Comparacion_Codigo;
Jumaroag 0:d570b80c224b 186 a++;
Jumaroag 0:d570b80c224b 187 antirebote_cables=0;
Jumaroag 0:d570b80c224b 188 }
Jumaroag 0:d570b80c224b 189 if(Cable_1==0 && antirebote_cables==2 && tiempo_rebote==1)
Jumaroag 0:d570b80c224b 190 {
Jumaroag 0:d570b80c224b 191 antirebote_cables=0;
Jumaroag 0:d570b80c224b 192 hab_cable_1=0;
Jumaroag 0:d570b80c224b 193 }
Jumaroag 0:d570b80c224b 194
Jumaroag 0:d570b80c224b 195 //Cable 2
Jumaroag 0:d570b80c224b 196 if(Cable_2==1 && antirebote_cables==0 && hab_cable_2==0)
Jumaroag 0:d570b80c224b 197 {
Jumaroag 0:d570b80c224b 198 tiempo_rebote=0;
Jumaroag 0:d570b80c224b 199 antirebote_cables=3;
Jumaroag 0:d570b80c224b 200 hab_cable_2=1;
Jumaroag 0:d570b80c224b 201 }
Jumaroag 0:d570b80c224b 202 if(Cable_2==1 && antirebote_cables==3 && tiempo_rebote==1)
Jumaroag 0:d570b80c224b 203 {
Jumaroag 0:d570b80c224b 204 combinacion[a]=3;
Jumaroag 0:d570b80c224b 205 Estado_General=Comparacion_Codigo;
Jumaroag 0:d570b80c224b 206 a++;
Jumaroag 0:d570b80c224b 207 antirebote_cables=0;
Jumaroag 0:d570b80c224b 208 }
Jumaroag 0:d570b80c224b 209 if(Cable_2==0 && antirebote_cables==3 && tiempo_rebote==1)
Jumaroag 0:d570b80c224b 210 {
Jumaroag 0:d570b80c224b 211 antirebote_cables=0;
Jumaroag 0:d570b80c224b 212 hab_cable_2=0;
Jumaroag 0:d570b80c224b 213 }
Jumaroag 0:d570b80c224b 214
Jumaroag 0:d570b80c224b 215 //Cable 3
Jumaroag 0:d570b80c224b 216 if(Cable_3==1 && antirebote_cables==0 && hab_cable_3==0)
Jumaroag 0:d570b80c224b 217 {
Jumaroag 0:d570b80c224b 218 tiempo_rebote=0;
Jumaroag 0:d570b80c224b 219 antirebote_cables=4;
Jumaroag 0:d570b80c224b 220 hab_cable_3=1;
Jumaroag 0:d570b80c224b 221 }
Jumaroag 0:d570b80c224b 222 if(Cable_3==1 && antirebote_cables==4 && tiempo_rebote==1)
Jumaroag 0:d570b80c224b 223 {
Jumaroag 0:d570b80c224b 224 combinacion[a]=4;
Jumaroag 0:d570b80c224b 225 Estado_General=Comparacion_Codigo;
Jumaroag 0:d570b80c224b 226 a++;
Jumaroag 0:d570b80c224b 227 antirebote_cables=0;
Jumaroag 0:d570b80c224b 228 }
Jumaroag 0:d570b80c224b 229 if(Cable_3==0 && antirebote_cables==4 && tiempo_rebote==1)
Jumaroag 0:d570b80c224b 230 {
Jumaroag 0:d570b80c224b 231 antirebote_cables=0;
Jumaroag 0:d570b80c224b 232 hab_cable_3=0;
Jumaroag 0:d570b80c224b 233 }
Jumaroag 0:d570b80c224b 234
Jumaroag 0:d570b80c224b 235 //Boton Para RESET - si se pulsa vuelvo a Esperando Inicio
Jumaroag 0:d570b80c224b 236 if(Pulsador==0 && antirebote_pulsador==0 && habilitacion_pulsador==1)
Jumaroag 0:d570b80c224b 237 {
Jumaroag 0:d570b80c224b 238 tiempo_rebote=0;
Jumaroag 0:d570b80c224b 239 antirebote_pulsador=1;
Jumaroag 0:d570b80c224b 240 }
Jumaroag 0:d570b80c224b 241 if(tiempo_rebote==1 && Pulsador==0 && habilitacion_pulsador==1)
Jumaroag 0:d570b80c224b 242 {
Jumaroag 0:d570b80c224b 243 Estado_General=Esperando_Inicio;//Reseteo y vuelvo al estado inicial
Jumaroag 0:d570b80c224b 244 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 245 antiprintf=0;
Jumaroag 0:d570b80c224b 246 printf("RESET\n");
Jumaroag 0:d570b80c224b 247 habilitacion_pulsador=0;
Jumaroag 0:d570b80c224b 248 }
Jumaroag 0:d570b80c224b 249 if(tiempo_rebote==1 && Pulsador==1 && habilitacion_pulsador==1)
Jumaroag 0:d570b80c224b 250 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 251
Jumaroag 0:d570b80c224b 252 if(Pulsador==1 && antirebote_pulsador==0)
Jumaroag 0:d570b80c224b 253 {
Jumaroag 0:d570b80c224b 254 tiempo_rebote=0;
Jumaroag 0:d570b80c224b 255 antirebote_pulsador=1;
Jumaroag 0:d570b80c224b 256 }
Jumaroag 0:d570b80c224b 257 if(tiempo_rebote==1 && Pulsador==1)
Jumaroag 0:d570b80c224b 258 {
Jumaroag 0:d570b80c224b 259 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 260 habilitacion_pulsador=1;
Jumaroag 0:d570b80c224b 261 }
Jumaroag 0:d570b80c224b 262 if(tiempo_rebote==1 && Pulsador==0)
Jumaroag 0:d570b80c224b 263 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 264 break;
Jumaroag 0:d570b80c224b 265
Jumaroag 0:d570b80c224b 266 case Comparacion_Codigo://comparo el codigo con la combinacion
Jumaroag 0:d570b80c224b 267 if(combinacion[a-1]!=codigo[a-1])//Si el cable es incorrecto perdes
Jumaroag 0:d570b80c224b 268 {
Jumaroag 0:d570b80c224b 269 printf("\n-----PERDISTE-----\n");
Jumaroag 0:d570b80c224b 270 Estado_General=Termino;
Jumaroag 0:d570b80c224b 271 }
Jumaroag 0:d570b80c224b 272 if(combinacion[a-1]== codigo[a-1])//si es correcto seguis jugando
Jumaroag 0:d570b80c224b 273 Estado_General=Esperando_Desactivacion;
Jumaroag 0:d570b80c224b 274 if((a==4) && (Estado_General==Esperando_Desactivacion))//si sacas el ultimo cable y es correcto ganas
Jumaroag 0:d570b80c224b 275 {
Jumaroag 0:d570b80c224b 276 printf("\n-----GANASTE-----\n");
Jumaroag 0:d570b80c224b 277 Estado_General=Termino;
Jumaroag 0:d570b80c224b 278 }
Jumaroag 0:d570b80c224b 279 break;
Jumaroag 0:d570b80c224b 280
Jumaroag 0:d570b80c224b 281 case Termino://Hago parpadear el diaplay y el led correspondiente - espero boton para volver a inicio
Jumaroag 0:d570b80c224b 282 mostrar(n);
Jumaroag 0:d570b80c224b 283 while(antiprintf==0)
Jumaroag 0:d570b80c224b 284 {
Jumaroag 0:d570b80c224b 285 printf("Conecte todos los cables\nPulse para iniciar de nuevo\n\n");
Jumaroag 0:d570b80c224b 286 tiempo.detach();//freno el tiempo donde haya quedado
Jumaroag 0:d570b80c224b 287 tiempo.attach(&parpadeo, 0.2);//inicio el parpadeo
Jumaroag 0:d570b80c224b 288 antiprintf=1;
Jumaroag 0:d570b80c224b 289 }
Jumaroag 0:d570b80c224b 290 if((b%2)==1 && hab_parpadeo==0)
Jumaroag 0:d570b80c224b 291 {
Jumaroag 0:d570b80c224b 292 estado_mostrar=5;
Jumaroag 0:d570b80c224b 293 if(a==4)
Jumaroag 0:d570b80c224b 294 led_verde=0;
Jumaroag 0:d570b80c224b 295 if(a!=4)
Jumaroag 0:d570b80c224b 296 led_rojo=0;
Jumaroag 0:d570b80c224b 297 hab_parpadeo=1;
Jumaroag 0:d570b80c224b 298 }
Jumaroag 0:d570b80c224b 299 if((b%2)==0 && hab_parpadeo==1)
Jumaroag 0:d570b80c224b 300 {
Jumaroag 0:d570b80c224b 301 estado_mostrar=1;
Jumaroag 0:d570b80c224b 302 if(a==4)
Jumaroag 0:d570b80c224b 303 led_verde=1;
Jumaroag 0:d570b80c224b 304 if(a!=4)
Jumaroag 0:d570b80c224b 305 led_rojo=1;
Jumaroag 0:d570b80c224b 306 hab_parpadeo=0;
Jumaroag 0:d570b80c224b 307 }
Jumaroag 0:d570b80c224b 308 if(b==10)
Jumaroag 0:d570b80c224b 309 {
Jumaroag 0:d570b80c224b 310 tiempo.detach();
Jumaroag 0:d570b80c224b 311 led_verde=1;
Jumaroag 0:d570b80c224b 312 led_rojo=1;
Jumaroag 0:d570b80c224b 313 b=0;
Jumaroag 0:d570b80c224b 314 }
Jumaroag 0:d570b80c224b 315 if(Pulsador==0 && antirebote_pulsador==0 && habilitacion_pulsador==1)
Jumaroag 0:d570b80c224b 316 {
Jumaroag 0:d570b80c224b 317 tiempo_rebote=0;
Jumaroag 0:d570b80c224b 318 antirebote_pulsador=1;
Jumaroag 0:d570b80c224b 319 }
Jumaroag 0:d570b80c224b 320 if(tiempo_rebote==1 && Pulsador==0 && habilitacion_pulsador==1)
Jumaroag 0:d570b80c224b 321 {
Jumaroag 0:d570b80c224b 322 Estado_General=Esperando_Inicio;//Vuelvo al estado de inicio
Jumaroag 0:d570b80c224b 323 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 324 antiprintf=0;
Jumaroag 0:d570b80c224b 325 }
Jumaroag 0:d570b80c224b 326 if(tiempo_rebote==1 && Pulsador==1 && habilitacion_pulsador==1)
Jumaroag 0:d570b80c224b 327 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 328
Jumaroag 0:d570b80c224b 329 if(Pulsador==1 && antirebote_pulsador==0)
Jumaroag 0:d570b80c224b 330 {
Jumaroag 0:d570b80c224b 331 tiempo_rebote=0;
Jumaroag 0:d570b80c224b 332 antirebote_pulsador=1;
Jumaroag 0:d570b80c224b 333 }
Jumaroag 0:d570b80c224b 334 if(tiempo_rebote==1 && Pulsador==1)
Jumaroag 0:d570b80c224b 335 {
Jumaroag 0:d570b80c224b 336 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 337 habilitacion_pulsador=1;
Jumaroag 0:d570b80c224b 338 }
Jumaroag 0:d570b80c224b 339 if(tiempo_rebote==1 && Pulsador==0)
Jumaroag 0:d570b80c224b 340 antirebote_pulsador=0;
Jumaroag 0:d570b80c224b 341 break;
Jumaroag 0:d570b80c224b 342 }//sw
Jumaroag 0:d570b80c224b 343 }//while
Jumaroag 0:d570b80c224b 344 }//main
Jumaroag 0:d570b80c224b 345
Jumaroag 0:d570b80c224b 346
Jumaroag 0:d570b80c224b 347 void anti_rebote(void)//cada 1ms
Jumaroag 0:d570b80c224b 348 {
Jumaroag 0:d570b80c224b 349 tiempo_rebote++;
Jumaroag 0:d570b80c224b 350 if(tiempo_rebote==10)
Jumaroag 0:d570b80c224b 351 tiempo_rebote=0;
Jumaroag 0:d570b80c224b 352 }
Jumaroag 0:d570b80c224b 353
Jumaroag 0:d570b80c224b 354 void tiempito(void)//Cuenta regresiva cada 1 seg
Jumaroag 0:d570b80c224b 355 {
Jumaroag 0:d570b80c224b 356 n--;
Jumaroag 0:d570b80c224b 357 if(n==0)
Jumaroag 0:d570b80c224b 358 {
Jumaroag 0:d570b80c224b 359 printf("\nPERDISTE\n");
Jumaroag 0:d570b80c224b 360 Estado_General=Termino;
Jumaroag 0:d570b80c224b 361 a=0;
Jumaroag 0:d570b80c224b 362 }
Jumaroag 0:d570b80c224b 363 }
Jumaroag 0:d570b80c224b 364
Jumaroag 0:d570b80c224b 365 void parpadeo(void)
Jumaroag 0:d570b80c224b 366 {
Jumaroag 0:d570b80c224b 367 b++;
Jumaroag 0:d570b80c224b 368 }
Jumaroag 0:d570b80c224b 369
Jumaroag 0:d570b80c224b 370 void tiempo_barrido(void)
Jumaroag 0:d570b80c224b 371 {
Jumaroag 0:d570b80c224b 372 if(estado_mostrar==2)
Jumaroag 0:d570b80c224b 373 if(tiempo_decenas == 0)//if del demonio
Jumaroag 0:d570b80c224b 374 tiempo_decenas++;
Jumaroag 0:d570b80c224b 375 if(estado_mostrar==4)
Jumaroag 0:d570b80c224b 376 if(tiempo_unidades == 0)//if del demonio
Jumaroag 0:d570b80c224b 377 tiempo_unidades++;
Jumaroag 0:d570b80c224b 378 }
Jumaroag 0:d570b80c224b 379
Jumaroag 0:d570b80c224b 380 void mostrar(unsigned char n)//Funcion que muestra por los displays el nro que le pases
Jumaroag 0:d570b80c224b 381 {
Jumaroag 0:d570b80c224b 382 switch (estado_mostrar)
Jumaroag 0:d570b80c224b 383 {
Jumaroag 0:d570b80c224b 384 default:
Jumaroag 0:d570b80c224b 385
Jumaroag 0:d570b80c224b 386 case 0:
Jumaroag 0:d570b80c224b 387 estado_anterior=0;
Jumaroag 0:d570b80c224b 388 decena=n/10;
Jumaroag 0:d570b80c224b 389 unidad=n%10;
Jumaroag 0:d570b80c224b 390 Habilitacion_Decenas=1;
Jumaroag 0:d570b80c224b 391 Habilitacion_Unidades=1;
Jumaroag 0:d570b80c224b 392 estado_mostrar=1;
Jumaroag 0:d570b80c224b 393 break;
Jumaroag 0:d570b80c224b 394
Jumaroag 0:d570b80c224b 395 case 1:
Jumaroag 0:d570b80c224b 396 estado_anterior=1;
Jumaroag 0:d570b80c224b 397 if(decena==0)
Jumaroag 0:d570b80c224b 398 {
Jumaroag 0:d570b80c224b 399 Segmento_A=1;
Jumaroag 0:d570b80c224b 400 Segmento_B=1;
Jumaroag 0:d570b80c224b 401 Segmento_C=1;
Jumaroag 0:d570b80c224b 402 Segmento_D=1;
Jumaroag 0:d570b80c224b 403 Segmento_E=1;
Jumaroag 0:d570b80c224b 404 Segmento_F=1;
Jumaroag 0:d570b80c224b 405 Segmento_G=0;
Jumaroag 0:d570b80c224b 406 }
Jumaroag 0:d570b80c224b 407 if(decena==1)
Jumaroag 0:d570b80c224b 408 {
Jumaroag 0:d570b80c224b 409 Segmento_A=0;
Jumaroag 0:d570b80c224b 410 Segmento_B=1;
Jumaroag 0:d570b80c224b 411 Segmento_C=1;
Jumaroag 0:d570b80c224b 412 Segmento_D=0;
Jumaroag 0:d570b80c224b 413 Segmento_E=0;
Jumaroag 0:d570b80c224b 414 Segmento_F=0;
Jumaroag 0:d570b80c224b 415 Segmento_G=0;
Jumaroag 0:d570b80c224b 416 }
Jumaroag 0:d570b80c224b 417 if(decena==2)
Jumaroag 0:d570b80c224b 418 {
Jumaroag 0:d570b80c224b 419 Segmento_A=1;
Jumaroag 0:d570b80c224b 420 Segmento_B=1;
Jumaroag 0:d570b80c224b 421 Segmento_C=0;
Jumaroag 0:d570b80c224b 422 Segmento_D=1;
Jumaroag 0:d570b80c224b 423 Segmento_E=1;
Jumaroag 0:d570b80c224b 424 Segmento_F=0;
Jumaroag 0:d570b80c224b 425 Segmento_G=1;
Jumaroag 0:d570b80c224b 426 }
Jumaroag 0:d570b80c224b 427 if(decena==3)
Jumaroag 0:d570b80c224b 428 {
Jumaroag 0:d570b80c224b 429 Segmento_A=1;
Jumaroag 0:d570b80c224b 430 Segmento_B=1;
Jumaroag 0:d570b80c224b 431 Segmento_C=1;
Jumaroag 0:d570b80c224b 432 Segmento_D=1;
Jumaroag 0:d570b80c224b 433 Segmento_E=0;
Jumaroag 0:d570b80c224b 434 Segmento_F=0;
Jumaroag 0:d570b80c224b 435 Segmento_G=1;
Jumaroag 0:d570b80c224b 436 }
Jumaroag 0:d570b80c224b 437 estado_mostrar=2;
Jumaroag 0:d570b80c224b 438 break;
Jumaroag 0:d570b80c224b 439
Jumaroag 0:d570b80c224b 440 case 2:
Jumaroag 0:d570b80c224b 441 estado_anterior=2;
Jumaroag 0:d570b80c224b 442 Habilitacion_Decenas=0;
Jumaroag 0:d570b80c224b 443 Habilitacion_Unidades=1;
Jumaroag 0:d570b80c224b 444 if(tiempo_decenas==1)
Jumaroag 0:d570b80c224b 445 {
Jumaroag 0:d570b80c224b 446 tiempo_decenas=0;
Jumaroag 0:d570b80c224b 447 estado_mostrar=3;
Jumaroag 0:d570b80c224b 448 Habilitacion_Decenas=1;
Jumaroag 0:d570b80c224b 449 Habilitacion_Unidades=1;
Jumaroag 0:d570b80c224b 450 }
Jumaroag 0:d570b80c224b 451 break;
Jumaroag 0:d570b80c224b 452
Jumaroag 0:d570b80c224b 453 case 3:
Jumaroag 0:d570b80c224b 454 estado_anterior=3;
Jumaroag 0:d570b80c224b 455 if(unidad==0)
Jumaroag 0:d570b80c224b 456 {
Jumaroag 0:d570b80c224b 457 Segmento_A=1;
Jumaroag 0:d570b80c224b 458 Segmento_B=1;
Jumaroag 0:d570b80c224b 459 Segmento_C=1;
Jumaroag 0:d570b80c224b 460 Segmento_D=1;
Jumaroag 0:d570b80c224b 461 Segmento_E=1;
Jumaroag 0:d570b80c224b 462 Segmento_F=1;
Jumaroag 0:d570b80c224b 463 Segmento_G=0;
Jumaroag 0:d570b80c224b 464 }
Jumaroag 0:d570b80c224b 465 if(unidad==1)
Jumaroag 0:d570b80c224b 466 {
Jumaroag 0:d570b80c224b 467 Segmento_A=0;
Jumaroag 0:d570b80c224b 468 Segmento_B=1;
Jumaroag 0:d570b80c224b 469 Segmento_C=1;
Jumaroag 0:d570b80c224b 470 Segmento_D=0;
Jumaroag 0:d570b80c224b 471 Segmento_E=0;
Jumaroag 0:d570b80c224b 472 Segmento_F=0;
Jumaroag 0:d570b80c224b 473 Segmento_G=0;
Jumaroag 0:d570b80c224b 474 }
Jumaroag 0:d570b80c224b 475 if(unidad==2)
Jumaroag 0:d570b80c224b 476 {
Jumaroag 0:d570b80c224b 477 Segmento_A=1;
Jumaroag 0:d570b80c224b 478 Segmento_B=1;
Jumaroag 0:d570b80c224b 479 Segmento_C=0;
Jumaroag 0:d570b80c224b 480 Segmento_D=1;
Jumaroag 0:d570b80c224b 481 Segmento_E=1;
Jumaroag 0:d570b80c224b 482 Segmento_F=0;
Jumaroag 0:d570b80c224b 483 Segmento_G=1;
Jumaroag 0:d570b80c224b 484 }
Jumaroag 0:d570b80c224b 485 if(unidad==3)
Jumaroag 0:d570b80c224b 486 {
Jumaroag 0:d570b80c224b 487 Segmento_A=1;
Jumaroag 0:d570b80c224b 488 Segmento_B=1;
Jumaroag 0:d570b80c224b 489 Segmento_C=1;
Jumaroag 0:d570b80c224b 490 Segmento_D=1;
Jumaroag 0:d570b80c224b 491 Segmento_E=0;
Jumaroag 0:d570b80c224b 492 Segmento_F=0;
Jumaroag 0:d570b80c224b 493 Segmento_G=1;
Jumaroag 0:d570b80c224b 494 }
Jumaroag 0:d570b80c224b 495 if(unidad==4)
Jumaroag 0:d570b80c224b 496 {
Jumaroag 0:d570b80c224b 497 Segmento_A=0;
Jumaroag 0:d570b80c224b 498 Segmento_B=1;
Jumaroag 0:d570b80c224b 499 Segmento_C=1;
Jumaroag 0:d570b80c224b 500 Segmento_D=0;
Jumaroag 0:d570b80c224b 501 Segmento_E=0;
Jumaroag 0:d570b80c224b 502 Segmento_F=1;
Jumaroag 0:d570b80c224b 503 Segmento_G=1;
Jumaroag 0:d570b80c224b 504 }
Jumaroag 0:d570b80c224b 505 if(unidad==5)
Jumaroag 0:d570b80c224b 506 {
Jumaroag 0:d570b80c224b 507 Segmento_A=1;
Jumaroag 0:d570b80c224b 508 Segmento_B=0;
Jumaroag 0:d570b80c224b 509 Segmento_C=1;
Jumaroag 0:d570b80c224b 510 Segmento_D=1;
Jumaroag 0:d570b80c224b 511 Segmento_E=0;
Jumaroag 0:d570b80c224b 512 Segmento_F=1;
Jumaroag 0:d570b80c224b 513 Segmento_G=1;
Jumaroag 0:d570b80c224b 514 }
Jumaroag 0:d570b80c224b 515 if(unidad==6)
Jumaroag 0:d570b80c224b 516 {
Jumaroag 0:d570b80c224b 517 Segmento_A=1;
Jumaroag 0:d570b80c224b 518 Segmento_B=0;
Jumaroag 0:d570b80c224b 519 Segmento_C=1;
Jumaroag 0:d570b80c224b 520 Segmento_D=1;
Jumaroag 0:d570b80c224b 521 Segmento_E=1;
Jumaroag 0:d570b80c224b 522 Segmento_F=1;
Jumaroag 0:d570b80c224b 523 Segmento_G=1;
Jumaroag 0:d570b80c224b 524 }
Jumaroag 0:d570b80c224b 525 if(unidad==7)
Jumaroag 0:d570b80c224b 526 {
Jumaroag 0:d570b80c224b 527 Segmento_A=1;
Jumaroag 0:d570b80c224b 528 Segmento_B=1;
Jumaroag 0:d570b80c224b 529 Segmento_C=1;
Jumaroag 0:d570b80c224b 530 Segmento_D=0;
Jumaroag 0:d570b80c224b 531 Segmento_E=0;
Jumaroag 0:d570b80c224b 532 Segmento_F=0;
Jumaroag 0:d570b80c224b 533 Segmento_G=0;
Jumaroag 0:d570b80c224b 534 }
Jumaroag 0:d570b80c224b 535 if(unidad==8)
Jumaroag 0:d570b80c224b 536 {
Jumaroag 0:d570b80c224b 537 Segmento_A=1;
Jumaroag 0:d570b80c224b 538 Segmento_B=1;
Jumaroag 0:d570b80c224b 539 Segmento_C=1;
Jumaroag 0:d570b80c224b 540 Segmento_D=1;
Jumaroag 0:d570b80c224b 541 Segmento_E=1;
Jumaroag 0:d570b80c224b 542 Segmento_F=1;
Jumaroag 0:d570b80c224b 543 Segmento_G=1;
Jumaroag 0:d570b80c224b 544 }
Jumaroag 0:d570b80c224b 545 if(unidad==9)
Jumaroag 0:d570b80c224b 546 {
Jumaroag 0:d570b80c224b 547 Segmento_A=1;
Jumaroag 0:d570b80c224b 548 Segmento_B=1;
Jumaroag 0:d570b80c224b 549 Segmento_C=1;
Jumaroag 0:d570b80c224b 550 Segmento_D=0;
Jumaroag 0:d570b80c224b 551 Segmento_E=0;
Jumaroag 0:d570b80c224b 552 Segmento_F=1;
Jumaroag 0:d570b80c224b 553 Segmento_G=1;
Jumaroag 0:d570b80c224b 554 }
Jumaroag 0:d570b80c224b 555 estado_mostrar=4;
Jumaroag 0:d570b80c224b 556 break;
Jumaroag 0:d570b80c224b 557
Jumaroag 0:d570b80c224b 558 case 4:
Jumaroag 0:d570b80c224b 559 estado_anterior=4;
Jumaroag 0:d570b80c224b 560 Habilitacion_Decenas=1;
Jumaroag 0:d570b80c224b 561 Habilitacion_Unidades=0;
Jumaroag 0:d570b80c224b 562 if(tiempo_unidades==1)
Jumaroag 0:d570b80c224b 563 {
Jumaroag 0:d570b80c224b 564 tiempo_unidades=0;
Jumaroag 0:d570b80c224b 565 estado_mostrar=0;
Jumaroag 0:d570b80c224b 566 }
Jumaroag 0:d570b80c224b 567 break;
Jumaroag 0:d570b80c224b 568
Jumaroag 0:d570b80c224b 569 case 5:
Jumaroag 0:d570b80c224b 570 Habilitacion_Decenas=1;
Jumaroag 0:d570b80c224b 571 Habilitacion_Unidades=1;
Jumaroag 0:d570b80c224b 572 break;
Jumaroag 0:d570b80c224b 573 }//sw
Jumaroag 0:d570b80c224b 574 }//funcion