Fernando Maraz / Mbed 2 deprecated ATRAPALUZ

Dependencies:   mbed

Committer:
fm_4186
Date:
Sun Jun 05 21:58:44 2022 +0000
Revision:
1:a8699ad87eee
Parent:
0:e30c05ee1b0a
ATRAPA LA LUZ ARIAS-MARAZ

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fm_4186 0:e30c05ee1b0a 1
fm_4186 0:e30c05ee1b0a 2 #include "mbed.h"
fm_4186 0:e30c05ee1b0a 3 #define CANT_PULSADORES 2
fm_4186 0:e30c05ee1b0a 4 Serial pc(USBTX, USBRX);
fm_4186 0:e30c05ee1b0a 5 Ticker tick;
fm_4186 0:e30c05ee1b0a 6 BusOut leds(D10,D9,D8,D6,D5,D4,D3,D2);
fm_4186 0:e30c05ee1b0a 7 DigitalOut A_D(PTB8);
fm_4186 0:e30c05ee1b0a 8 DigitalOut B_D(PTB9);
fm_4186 0:e30c05ee1b0a 9 DigitalOut C_D(PTB10);
fm_4186 0:e30c05ee1b0a 10 DigitalOut D_D(PTB11);
fm_4186 0:e30c05ee1b0a 11 DigitalOut E_D(PTE2);
fm_4186 0:e30c05ee1b0a 12 DigitalOut F_D(PTE3);
fm_4186 0:e30c05ee1b0a 13 DigitalOut G_D(PTE4);
fm_4186 0:e30c05ee1b0a 14 DigitalOut CAT(PTE5);
fm_4186 0:e30c05ee1b0a 15 BusIn pulsadores (D12,D11);
fm_4186 0:e30c05ee1b0a 16 int tiempo=0;
fm_4186 0:e30c05ee1b0a 17 int tiempo2=0;
fm_4186 0:e30c05ee1b0a 18 int valor = 0;
fm_4186 0:e30c05ee1b0a 19 int display=1;
fm_4186 0:e30c05ee1b0a 20 void funcion();
fm_4186 0:e30c05ee1b0a 21 void flip()
fm_4186 0:e30c05ee1b0a 22 {
fm_4186 1:a8699ad87eee 23 funcion(); //coloco acà la funciòn para que se ejecute todo el tiempo
fm_4186 0:e30c05ee1b0a 24 if(tiempo<=50000) {
fm_4186 0:e30c05ee1b0a 25 tiempo++;
fm_4186 0:e30c05ee1b0a 26 }
fm_4186 0:e30c05ee1b0a 27 if(tiempo2<=800) {
fm_4186 0:e30c05ee1b0a 28 tiempo2++;
fm_4186 0:e30c05ee1b0a 29 }
fm_4186 0:e30c05ee1b0a 30 }
fm_4186 0:e30c05ee1b0a 31 int Led_Step(); // declaro las funciones
fm_4186 0:e30c05ee1b0a 32 void Maquina_General(void);
fm_4186 0:e30c05ee1b0a 33 void inicio();
fm_4186 0:e30c05ee1b0a 34 void ganador();
fm_4186 0:e30c05ee1b0a 35 int main()
fm_4186 0:e30c05ee1b0a 36 {
fm_4186 0:e30c05ee1b0a 37 tick.attach(&flip, 0.01);
fm_4186 0:e30c05ee1b0a 38 pulsadores[0].mode(PullNone);
fm_4186 0:e30c05ee1b0a 39 pulsadores[1].mode(PullNone);
fm_4186 0:e30c05ee1b0a 40 while (true) {
fm_4186 0:e30c05ee1b0a 41 Maquina_General();
fm_4186 0:e30c05ee1b0a 42 }
fm_4186 0:e30c05ee1b0a 43 }
fm_4186 0:e30c05ee1b0a 44 ///
fm_4186 0:e30c05ee1b0a 45 void Maquina_General(void)
fm_4186 0:e30c05ee1b0a 46 {
fm_4186 0:e30c05ee1b0a 47 static int estado_A = 0;
fm_4186 0:e30c05ee1b0a 48 static int led_actual = 0;
fm_4186 0:e30c05ee1b0a 49 static int puntos_a = 0,puntos_b = 0; // lo pongo static porque sino me cambia el valor de los puntos
fm_4186 0:e30c05ee1b0a 50 int a=0, b=0;
fm_4186 0:e30c05ee1b0a 51 switch(estado_A) {
fm_4186 0:e30c05ee1b0a 52 case 0:
fm_4186 0:e30c05ee1b0a 53 inicio();
fm_4186 0:e30c05ee1b0a 54 if(pulsadores[0] == 1 && pulsadores[1] == 1) {
fm_4186 0:e30c05ee1b0a 55
fm_4186 0:e30c05ee1b0a 56 estado_A = 1; //se prende el sistema
fm_4186 0:e30c05ee1b0a 57 puntos_a = 0;
fm_4186 0:e30c05ee1b0a 58 puntos_b = 0;
fm_4186 0:e30c05ee1b0a 59 tiempo=0;
fm_4186 0:e30c05ee1b0a 60 }
fm_4186 0:e30c05ee1b0a 61 break;
fm_4186 0:e30c05ee1b0a 62 case 1: //estado jugador 1
fm_4186 0:e30c05ee1b0a 63 Led_Step();
fm_4186 0:e30c05ee1b0a 64 if(tiempo>=20) { //pequeña demora para evitar problemas
fm_4186 0:e30c05ee1b0a 65 if(pulsadores[0] == 1 ) {
fm_4186 0:e30c05ee1b0a 66 leds=0;
fm_4186 0:e30c05ee1b0a 67 led_actual = Led_Step(); //valor de estado de funcion Led_Step()
fm_4186 0:e30c05ee1b0a 68 if (led_actual==8) //en caso que sea el segundo sentido y asi detectar el led en el que paro
fm_4186 0:e30c05ee1b0a 69 a=2;
fm_4186 0:e30c05ee1b0a 70 if (led_actual==9)
fm_4186 0:e30c05ee1b0a 71 a=4;
fm_4186 0:e30c05ee1b0a 72 if (led_actual==10)
fm_4186 0:e30c05ee1b0a 73 a=6;
fm_4186 0:e30c05ee1b0a 74 if (led_actual==11)
fm_4186 0:e30c05ee1b0a 75 a=8;
fm_4186 0:e30c05ee1b0a 76 if (led_actual==12)
fm_4186 0:e30c05ee1b0a 77 a=10;
fm_4186 0:e30c05ee1b0a 78 if (led_actual==13)
fm_4186 0:e30c05ee1b0a 79 a=12;
fm_4186 0:e30c05ee1b0a 80 if(led_actual > 7) {
fm_4186 0:e30c05ee1b0a 81 led_actual = led_actual - a; // coloco esta variable en su led perteneciente
fm_4186 0:e30c05ee1b0a 82 }
fm_4186 0:e30c05ee1b0a 83 leds[led_actual]=1; //2 segundos prendido
fm_4186 1:a8699ad87eee 84 if(led_actual == 7) {
fm_4186 1:a8699ad87eee 85 puntos_a= puntos_a + 10;
fm_4186 1:a8699ad87eee 86 printf("el jugador 1 suma un punto\n");
fm_4186 1:a8699ad87eee 87 leds[0]=1;
fm_4186 1:a8699ad87eee 88 leds[1]=1;
fm_4186 1:a8699ad87eee 89 leds[2]=1;
fm_4186 1:a8699ad87eee 90 leds[3]=1;
fm_4186 1:a8699ad87eee 91 leds[4]=1;
fm_4186 1:a8699ad87eee 92 leds[5]=1;
fm_4186 1:a8699ad87eee 93 leds[6]=1;
fm_4186 1:a8699ad87eee 94 leds[7]=1;
fm_4186 1:a8699ad87eee 95 } // sumo 10 puntos para luego en el multuplexado poder usar los 2 displays juntos
fm_4186 0:e30c05ee1b0a 96 valor = puntos_a + puntos_b; // valor que le llega al barrido
fm_4186 0:e30c05ee1b0a 97 estado_A = 3; // paso a la espera
fm_4186 0:e30c05ee1b0a 98 tiempo2=0; // hago que vuelva a contar el tiempo 2
fm_4186 0:e30c05ee1b0a 99 }
fm_4186 0:e30c05ee1b0a 100 }
fm_4186 0:e30c05ee1b0a 101 break;
fm_4186 0:e30c05ee1b0a 102 case 2: //estado jugador 2
fm_4186 0:e30c05ee1b0a 103 Led_Step();
fm_4186 0:e30c05ee1b0a 104 if(pulsadores[1] == 1 ) {
fm_4186 0:e30c05ee1b0a 105 leds=0;
fm_4186 0:e30c05ee1b0a 106 led_actual = Led_Step(); //valor de estado de funcion Led_Step()
fm_4186 0:e30c05ee1b0a 107 if (led_actual==8)
fm_4186 0:e30c05ee1b0a 108 b=2;
fm_4186 0:e30c05ee1b0a 109 if (led_actual==9)
fm_4186 0:e30c05ee1b0a 110 b=4;
fm_4186 0:e30c05ee1b0a 111 if (led_actual==10)
fm_4186 0:e30c05ee1b0a 112 b=6;
fm_4186 0:e30c05ee1b0a 113 if (led_actual==11)
fm_4186 0:e30c05ee1b0a 114 b=8;
fm_4186 0:e30c05ee1b0a 115 if (led_actual==12)
fm_4186 0:e30c05ee1b0a 116 b=10;
fm_4186 0:e30c05ee1b0a 117 if (led_actual==13)
fm_4186 0:e30c05ee1b0a 118 b=12;
fm_4186 0:e30c05ee1b0a 119 if(led_actual > 7) {
fm_4186 0:e30c05ee1b0a 120 led_actual = led_actual - b;
fm_4186 0:e30c05ee1b0a 121 }
fm_4186 0:e30c05ee1b0a 122 leds[led_actual]=1; //2 segundos
fm_4186 1:a8699ad87eee 123 if(led_actual == 0) {
fm_4186 0:e30c05ee1b0a 124 puntos_b++;
fm_4186 1:a8699ad87eee 125 printf("el jugador 2 suma un punto\n");
fm_4186 1:a8699ad87eee 126 leds[0]=1;
fm_4186 1:a8699ad87eee 127 leds[1]=1;
fm_4186 1:a8699ad87eee 128 leds[2]=1;
fm_4186 1:a8699ad87eee 129 leds[3]=1;
fm_4186 1:a8699ad87eee 130 leds[4]=1;
fm_4186 1:a8699ad87eee 131 leds[5]=1;
fm_4186 1:a8699ad87eee 132 leds[6]=1;
fm_4186 1:a8699ad87eee 133 leds[7]=1;
fm_4186 1:a8699ad87eee 134 }
fm_4186 0:e30c05ee1b0a 135 valor = puntos_a + puntos_b;
fm_4186 0:e30c05ee1b0a 136 estado_A = 4;
fm_4186 0:e30c05ee1b0a 137 tiempo2=0;
fm_4186 0:e30c05ee1b0a 138 }
fm_4186 0:e30c05ee1b0a 139 break;
fm_4186 0:e30c05ee1b0a 140 case 3: // Espero tiempo pausado jugador 1
fm_4186 0:e30c05ee1b0a 141 if(tiempo2==200) {
fm_4186 0:e30c05ee1b0a 142 leds[led_actual]=0;
fm_4186 0:e30c05ee1b0a 143 estado_A = 2;
fm_4186 1:a8699ad87eee 144 if(puntos_a >= 50) {
fm_4186 0:e30c05ee1b0a 145 estado_A = 0; // vuelvo al inicio asi en caso de que se desee se vuelva a iniciar el juego
fm_4186 0:e30c05ee1b0a 146 puntos_a=0; // vuelvo todo a cero por las dudas
fm_4186 0:e30c05ee1b0a 147 puntos_b=0;
fm_4186 0:e30c05ee1b0a 148 valor=0;
fm_4186 1:a8699ad87eee 149 printf("el jugaror 1 gana\n");
fm_4186 0:e30c05ee1b0a 150 }
fm_4186 0:e30c05ee1b0a 151 tiempo=0;
fm_4186 0:e30c05ee1b0a 152 }
fm_4186 0:e30c05ee1b0a 153 break;
fm_4186 0:e30c05ee1b0a 154 case 4: // Espero tiempo pausado jugador 2
fm_4186 0:e30c05ee1b0a 155 if(tiempo2==200) {
fm_4186 0:e30c05ee1b0a 156 leds[led_actual]=0;
fm_4186 0:e30c05ee1b0a 157 estado_A = 1;
fm_4186 0:e30c05ee1b0a 158 if(puntos_b >= 2) {
fm_4186 0:e30c05ee1b0a 159 estado_A = 0;
fm_4186 0:e30c05ee1b0a 160 puntos_a=0;
fm_4186 0:e30c05ee1b0a 161 puntos_b=0;
fm_4186 0:e30c05ee1b0a 162 valor=0;
fm_4186 1:a8699ad87eee 163 printf("el jugaror 2 gana\n");
fm_4186 0:e30c05ee1b0a 164 }
fm_4186 0:e30c05ee1b0a 165 tiempo=0;
fm_4186 0:e30c05ee1b0a 166 }
fm_4186 0:e30c05ee1b0a 167 break;
fm_4186 0:e30c05ee1b0a 168 }
fm_4186 0:e30c05ee1b0a 169 }
fm_4186 0:e30c05ee1b0a 170 ///
fm_4186 0:e30c05ee1b0a 171 int Led_Step(void) // funcion de secuencia ida y vuelva
fm_4186 0:e30c05ee1b0a 172 {
fm_4186 0:e30c05ee1b0a 173 static int estado = 0;
fm_4186 0:e30c05ee1b0a 174 switch(estado) {
fm_4186 0:e30c05ee1b0a 175 case 0:
fm_4186 0:e30c05ee1b0a 176 leds = 0;
fm_4186 0:e30c05ee1b0a 177 leds[0] = 1; //suma un punto jugador 2
fm_4186 0:e30c05ee1b0a 178 if(tiempo == 5) { // 0.05 SEG
fm_4186 0:e30c05ee1b0a 179 estado = 1;
fm_4186 0:e30c05ee1b0a 180 }
fm_4186 0:e30c05ee1b0a 181 break;
fm_4186 0:e30c05ee1b0a 182 case 1:
fm_4186 0:e30c05ee1b0a 183 leds=0;
fm_4186 0:e30c05ee1b0a 184 leds[1] = 1;
fm_4186 0:e30c05ee1b0a 185 if(tiempo == 10) {
fm_4186 0:e30c05ee1b0a 186 estado = 2;
fm_4186 0:e30c05ee1b0a 187 }
fm_4186 0:e30c05ee1b0a 188 break;
fm_4186 0:e30c05ee1b0a 189 case 2:
fm_4186 0:e30c05ee1b0a 190 leds=0;
fm_4186 0:e30c05ee1b0a 191 leds[2] = 1;
fm_4186 0:e30c05ee1b0a 192 if(tiempo == 15) {
fm_4186 0:e30c05ee1b0a 193 estado = 3;
fm_4186 0:e30c05ee1b0a 194 }
fm_4186 0:e30c05ee1b0a 195 break;
fm_4186 0:e30c05ee1b0a 196 case 3:
fm_4186 0:e30c05ee1b0a 197 leds=0;
fm_4186 0:e30c05ee1b0a 198 leds[3] = 1;
fm_4186 0:e30c05ee1b0a 199 if(tiempo == 20) {
fm_4186 0:e30c05ee1b0a 200 estado = 4;
fm_4186 0:e30c05ee1b0a 201 }
fm_4186 0:e30c05ee1b0a 202 break;
fm_4186 0:e30c05ee1b0a 203 case 4:
fm_4186 0:e30c05ee1b0a 204 leds=0;
fm_4186 0:e30c05ee1b0a 205 leds[4] = 1;
fm_4186 0:e30c05ee1b0a 206 if(tiempo == 25) {
fm_4186 0:e30c05ee1b0a 207 estado = 5;
fm_4186 0:e30c05ee1b0a 208 }
fm_4186 0:e30c05ee1b0a 209 break;
fm_4186 0:e30c05ee1b0a 210 case 5:
fm_4186 0:e30c05ee1b0a 211 leds=0;
fm_4186 0:e30c05ee1b0a 212 leds[5] = 1;
fm_4186 0:e30c05ee1b0a 213 if(tiempo == 30) {
fm_4186 0:e30c05ee1b0a 214 estado = 6;
fm_4186 0:e30c05ee1b0a 215 }
fm_4186 0:e30c05ee1b0a 216 break;
fm_4186 0:e30c05ee1b0a 217 case 6:
fm_4186 0:e30c05ee1b0a 218 leds=0;
fm_4186 0:e30c05ee1b0a 219 leds[6] = 1;
fm_4186 0:e30c05ee1b0a 220 if(tiempo == 35) {
fm_4186 0:e30c05ee1b0a 221 estado = 7;
fm_4186 0:e30c05ee1b0a 222 }
fm_4186 0:e30c05ee1b0a 223 break;
fm_4186 0:e30c05ee1b0a 224 case 7:
fm_4186 0:e30c05ee1b0a 225 leds=0;
fm_4186 0:e30c05ee1b0a 226 leds[7] = 1; //suma un punto jugador 1
fm_4186 0:e30c05ee1b0a 227 if(tiempo == 40) {
fm_4186 0:e30c05ee1b0a 228 estado = 8;
fm_4186 0:e30c05ee1b0a 229 }
fm_4186 0:e30c05ee1b0a 230 break;
fm_4186 0:e30c05ee1b0a 231 case 8:
fm_4186 0:e30c05ee1b0a 232 leds=0;
fm_4186 0:e30c05ee1b0a 233 leds[6] = 1;
fm_4186 0:e30c05ee1b0a 234 if(tiempo == 45) {
fm_4186 0:e30c05ee1b0a 235 estado = 9;
fm_4186 0:e30c05ee1b0a 236 }
fm_4186 0:e30c05ee1b0a 237 break;
fm_4186 0:e30c05ee1b0a 238 case 9:
fm_4186 0:e30c05ee1b0a 239 leds=0;
fm_4186 0:e30c05ee1b0a 240 leds[5] = 1;
fm_4186 0:e30c05ee1b0a 241 if(tiempo == 50) {
fm_4186 0:e30c05ee1b0a 242 estado = 10;
fm_4186 0:e30c05ee1b0a 243 }
fm_4186 0:e30c05ee1b0a 244 break;
fm_4186 0:e30c05ee1b0a 245 case 10:
fm_4186 0:e30c05ee1b0a 246 leds=0;
fm_4186 0:e30c05ee1b0a 247 leds[4] = 1;
fm_4186 0:e30c05ee1b0a 248 if(tiempo == 55) {
fm_4186 0:e30c05ee1b0a 249 estado = 11;
fm_4186 0:e30c05ee1b0a 250 }
fm_4186 0:e30c05ee1b0a 251 break;
fm_4186 0:e30c05ee1b0a 252 case 11:
fm_4186 0:e30c05ee1b0a 253 leds=0;
fm_4186 0:e30c05ee1b0a 254 leds[3] = 1;
fm_4186 0:e30c05ee1b0a 255 if(tiempo == 60) {
fm_4186 0:e30c05ee1b0a 256 estado = 12;
fm_4186 0:e30c05ee1b0a 257 }
fm_4186 0:e30c05ee1b0a 258 break;
fm_4186 0:e30c05ee1b0a 259 case 12:
fm_4186 0:e30c05ee1b0a 260 leds=0;
fm_4186 0:e30c05ee1b0a 261 leds[2] = 1;
fm_4186 0:e30c05ee1b0a 262 if(tiempo == 65) {
fm_4186 0:e30c05ee1b0a 263 estado = 13;
fm_4186 0:e30c05ee1b0a 264 }
fm_4186 0:e30c05ee1b0a 265 break;
fm_4186 0:e30c05ee1b0a 266 case 13:
fm_4186 0:e30c05ee1b0a 267 leds=0;
fm_4186 0:e30c05ee1b0a 268 leds[1] = 1;
fm_4186 0:e30c05ee1b0a 269 if(tiempo == 70) {
fm_4186 0:e30c05ee1b0a 270 estado = 0;
fm_4186 0:e30c05ee1b0a 271 tiempo=0;
fm_4186 0:e30c05ee1b0a 272 }
fm_4186 0:e30c05ee1b0a 273 break;
fm_4186 0:e30c05ee1b0a 274 }
fm_4186 0:e30c05ee1b0a 275 return estado;
fm_4186 0:e30c05ee1b0a 276 }
fm_4186 0:e30c05ee1b0a 277 ///
fm_4186 0:e30c05ee1b0a 278 void inicio(void) // funcion de espera antes que se inicie el juego
fm_4186 0:e30c05ee1b0a 279 {
fm_4186 0:e30c05ee1b0a 280 static int est = 0;
fm_4186 0:e30c05ee1b0a 281 switch(est) {
fm_4186 0:e30c05ee1b0a 282 case 0:
fm_4186 0:e30c05ee1b0a 283 leds = 0;
fm_4186 0:e30c05ee1b0a 284 leds[0] = 1;
fm_4186 0:e30c05ee1b0a 285 if(tiempo == 100) { //1 seg
fm_4186 0:e30c05ee1b0a 286 est = 1;
fm_4186 0:e30c05ee1b0a 287 }
fm_4186 0:e30c05ee1b0a 288 break;
fm_4186 0:e30c05ee1b0a 289 case 1:
fm_4186 0:e30c05ee1b0a 290 leds=0;
fm_4186 0:e30c05ee1b0a 291 leds[1] = 1;
fm_4186 0:e30c05ee1b0a 292 if(tiempo == 200) {
fm_4186 0:e30c05ee1b0a 293 est = 2;
fm_4186 0:e30c05ee1b0a 294 }
fm_4186 0:e30c05ee1b0a 295 break;
fm_4186 0:e30c05ee1b0a 296 case 2:
fm_4186 0:e30c05ee1b0a 297 leds=0;
fm_4186 0:e30c05ee1b0a 298 leds[2] = 1;
fm_4186 0:e30c05ee1b0a 299 if(tiempo == 300) {
fm_4186 0:e30c05ee1b0a 300 est = 3;
fm_4186 0:e30c05ee1b0a 301 }
fm_4186 0:e30c05ee1b0a 302 break;
fm_4186 0:e30c05ee1b0a 303 case 3:
fm_4186 0:e30c05ee1b0a 304 leds=0;
fm_4186 0:e30c05ee1b0a 305 leds[3] = 1;
fm_4186 0:e30c05ee1b0a 306 if(tiempo == 400) {
fm_4186 0:e30c05ee1b0a 307 est = 4;
fm_4186 0:e30c05ee1b0a 308 }
fm_4186 0:e30c05ee1b0a 309 break;
fm_4186 0:e30c05ee1b0a 310 case 4:
fm_4186 0:e30c05ee1b0a 311 leds=0;
fm_4186 0:e30c05ee1b0a 312 leds[4] = 1;
fm_4186 0:e30c05ee1b0a 313 if(tiempo == 500) {
fm_4186 0:e30c05ee1b0a 314 est = 5;
fm_4186 0:e30c05ee1b0a 315 }
fm_4186 0:e30c05ee1b0a 316 break;
fm_4186 0:e30c05ee1b0a 317 case 5:
fm_4186 0:e30c05ee1b0a 318 leds=0;
fm_4186 0:e30c05ee1b0a 319 leds[5] = 1;
fm_4186 0:e30c05ee1b0a 320 if(tiempo == 600) {
fm_4186 0:e30c05ee1b0a 321 est = 6;
fm_4186 0:e30c05ee1b0a 322 }
fm_4186 0:e30c05ee1b0a 323 break;
fm_4186 0:e30c05ee1b0a 324 case 6:
fm_4186 0:e30c05ee1b0a 325 leds=0;
fm_4186 0:e30c05ee1b0a 326 leds[6] = 1;
fm_4186 0:e30c05ee1b0a 327 if(tiempo == 700) {
fm_4186 0:e30c05ee1b0a 328 est = 7;
fm_4186 0:e30c05ee1b0a 329 }
fm_4186 0:e30c05ee1b0a 330 break;
fm_4186 0:e30c05ee1b0a 331 case 7:
fm_4186 0:e30c05ee1b0a 332 leds=0;
fm_4186 0:e30c05ee1b0a 333 leds[7] = 1;
fm_4186 0:e30c05ee1b0a 334 if(tiempo == 800) {
fm_4186 0:e30c05ee1b0a 335 est=0;
fm_4186 0:e30c05ee1b0a 336 tiempo = 0;
fm_4186 0:e30c05ee1b0a 337 }
fm_4186 0:e30c05ee1b0a 338 break;
fm_4186 0:e30c05ee1b0a 339 }
fm_4186 0:e30c05ee1b0a 340 }
fm_4186 0:e30c05ee1b0a 341 ///
fm_4186 0:e30c05ee1b0a 342 void funcion () // funcion de barrido multiplexado
fm_4186 0:e30c05ee1b0a 343 {
fm_4186 0:e30c05ee1b0a 344 int numeros[10]= {0b1111110, 0b0110000, 0b1101101, 0b1111001, 0b0110011, 0b1011011, 0b1011111, 0b1110000, 0b1111111, 0b1111011};
fm_4186 0:e30c05ee1b0a 345 int d1;
fm_4186 0:e30c05ee1b0a 346 if(display==0) //ponemos estas 2 cuentas para distinto display y asi cambiarlo en cada catodo, por esto es que los puntos a se suman de a 10
fm_4186 0:e30c05ee1b0a 347 d1 = valor/10;
fm_4186 0:e30c05ee1b0a 348 else
fm_4186 0:e30c05ee1b0a 349 d1 = valor%10;
fm_4186 0:e30c05ee1b0a 350
fm_4186 0:e30c05ee1b0a 351 A_D = (numeros[d1] & 0b1000000) >> 6;
fm_4186 0:e30c05ee1b0a 352 B_D = (numeros[d1] & 0b100000) >> 5;
fm_4186 0:e30c05ee1b0a 353 C_D = (numeros[d1] & 0b10000) >> 4;
fm_4186 0:e30c05ee1b0a 354 D_D = (numeros[d1] & 0b1000) >> 3;
fm_4186 0:e30c05ee1b0a 355 E_D = (numeros[d1] & 0b100) >> 2;
fm_4186 0:e30c05ee1b0a 356 F_D = (numeros[d1] & 0b10) >> 1;
fm_4186 0:e30c05ee1b0a 357 G_D = numeros[d1] & 1;
fm_4186 0:e30c05ee1b0a 358
fm_4186 0:e30c05ee1b0a 359 display ? display = 0 : display = 1; //cambio el display
fm_4186 0:e30c05ee1b0a 360 CAT=display; // asigno ese cambio al cátodo
fm_4186 0:e30c05ee1b0a 361 }
fm_4186 0:e30c05ee1b0a 362
fm_4186 0:e30c05ee1b0a 363
fm_4186 0:e30c05ee1b0a 364