Juan Manuel Rodriguez Aguado
/
Ejer03
Bomba
main.cpp@0:d570b80c224b, 2019-06-21 (annotated)
- Committer:
- Jumaroag
- Date:
- Fri Jun 21 02:55:49 2019 +0000
- Revision:
- 0:d570b80c224b
Ejer03
Who changed what in which revision?
User | Revision | Line number | New 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 |