Mateo Morales / Mbed 2 deprecated Tetris_3

Dependencies:   mbed

Committer:
Mateom0104
Date:
Fri Nov 23 01:00:30 2018 +0000
Revision:
1:b327db3eb9ce
Parent:
0:1006a6a7855b
Tetris sin color

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mateom0104 0:1006a6a7855b 1 #include "mbed.h"
Mateom0104 0:1006a6a7855b 2 #include "datos.h"
Mateom0104 0:1006a6a7855b 3
Mateom0104 0:1006a6a7855b 4
Mateom0104 0:1006a6a7855b 5 Serial pc(SERIAL_TX, SERIAL_RX);
Mateom0104 1:b327db3eb9ce 6 SPI deviceM(PB_15, PB_14, PB_13);
Mateom0104 1:b327db3eb9ce 7 DigitalOut ssel (PB_12);
Mateom0104 0:1006a6a7855b 8 void Rx_interrupt();
Mateom0104 0:1006a6a7855b 9
Mateom0104 0:1006a6a7855b 10 #define uint8_t unsigned char
Mateom0104 0:1006a6a7855b 11 uint8_t screen[8]={0,0,0,0,0,0,0,0};
Mateom0104 0:1006a6a7855b 12 uint8_t screen2[8]={0,0,0,0,0,0,0,0};
Mateom0104 0:1006a6a7855b 13 uint8_t verifica;
Mateom0104 0:1006a6a7855b 14 uint8_t mascara;
Mateom0104 0:1006a6a7855b 15 int velocidad=1000;
Mateom0104 0:1006a6a7855b 16 int segundo=1;
Mateom0104 0:1006a6a7855b 17 int verificacion=0;
Mateom0104 1:b327db3eb9ce 18 int rapido =1000;
Mateom0104 1:b327db3eb9ce 19 int vericolor=0;
Mateom0104 1:b327db3eb9ce 20
Mateom0104 1:b327db3eb9ce 21
Mateom0104 1:b327db3eb9ce 22 // variables y definiciones color
Mateom0104 1:b327db3eb9ce 23 DigitalOut s0(D3);
Mateom0104 1:b327db3eb9ce 24 DigitalOut s1(D4);
Mateom0104 1:b327db3eb9ce 25 DigitalOut s2(D5);
Mateom0104 1:b327db3eb9ce 26 DigitalOut s3(D6);
Mateom0104 1:b327db3eb9ce 27
Mateom0104 1:b327db3eb9ce 28 DigitalOut led_col(D7);
Mateom0104 1:b327db3eb9ce 29 DigitalOut led1(LED1);
Mateom0104 1:b327db3eb9ce 30 DigitalIn out(D2);
Mateom0104 1:b327db3eb9ce 31
Mateom0104 1:b327db3eb9ce 32 Timer tiempo;
Mateom0104 1:b327db3eb9ce 33
Mateom0104 1:b327db3eb9ce 34 int valor,verificacion_color ;
Mateom0104 1:b327db3eb9ce 35 int val_color;
Mateom0104 1:b327db3eb9ce 36 int val_r,val_g,val_b;
Mateom0104 1:b327db3eb9ce 37 int ch_color;
Mateom0104 1:b327db3eb9ce 38 void analisis (void);
Mateom0104 1:b327db3eb9ce 39
Mateom0104 1:b327db3eb9ce 40 #include "Movimiento.h"
Mateom0104 1:b327db3eb9ce 41 //////////////////////////////////////////////////////////////////////////////
Mateom0104 1:b327db3eb9ce 42
Mateom0104 1:b327db3eb9ce 43 void analisis_color(void)
Mateom0104 1:b327db3eb9ce 44 {
Mateom0104 1:b327db3eb9ce 45 while(verificacion_color==0)
Mateom0104 1:b327db3eb9ce 46 {
Mateom0104 1:b327db3eb9ce 47 valor=out.read();
Mateom0104 1:b327db3eb9ce 48 // pc.printf("valor 1= %d \n",valor);
Mateom0104 1:b327db3eb9ce 49 if (valor==1)
Mateom0104 1:b327db3eb9ce 50 {
Mateom0104 1:b327db3eb9ce 51 while(verificacion_color==0)
Mateom0104 1:b327db3eb9ce 52 {
Mateom0104 1:b327db3eb9ce 53 valor=out.read();
Mateom0104 1:b327db3eb9ce 54 // pc.printf("valor 2= %d \n",valor);
Mateom0104 1:b327db3eb9ce 55
Mateom0104 1:b327db3eb9ce 56 if(valor==0)
Mateom0104 1:b327db3eb9ce 57 {
Mateom0104 1:b327db3eb9ce 58 tiempo.start();
Mateom0104 1:b327db3eb9ce 59 }
Mateom0104 1:b327db3eb9ce 60 while(valor==0)
Mateom0104 1:b327db3eb9ce 61 {
Mateom0104 1:b327db3eb9ce 62 valor=out.read();
Mateom0104 1:b327db3eb9ce 63 // pc.printf("valor 3= %d \n",valor);
Mateom0104 1:b327db3eb9ce 64 verificacion_color=1;
Mateom0104 1:b327db3eb9ce 65 }
Mateom0104 1:b327db3eb9ce 66 }
Mateom0104 1:b327db3eb9ce 67 }
Mateom0104 1:b327db3eb9ce 68 }
Mateom0104 1:b327db3eb9ce 69 val_color=tiempo.read_us();
Mateom0104 1:b327db3eb9ce 70 tiempo.reset();
Mateom0104 1:b327db3eb9ce 71 verificacion_color=0;
Mateom0104 1:b327db3eb9ce 72 }
Mateom0104 0:1006a6a7855b 73
Mateom0104 0:1006a6a7855b 74
Mateom0104 1:b327db3eb9ce 75 ///////////////////////////////////////////////////////////////////////////////
Mateom0104 1:b327db3eb9ce 76 void datos_color(void)
Mateom0104 1:b327db3eb9ce 77 {
Mateom0104 1:b327db3eb9ce 78 s2=0;
Mateom0104 1:b327db3eb9ce 79 s3=0;
Mateom0104 1:b327db3eb9ce 80 analisis();
Mateom0104 1:b327db3eb9ce 81 //pc.printf("Rojox= %d \n",val_color);
Mateom0104 1:b327db3eb9ce 82 val_r=val_color;
Mateom0104 1:b327db3eb9ce 83 wait_ms(100);
Mateom0104 1:b327db3eb9ce 84
Mateom0104 1:b327db3eb9ce 85
Mateom0104 1:b327db3eb9ce 86 s2=0;
Mateom0104 1:b327db3eb9ce 87 s3=1;
Mateom0104 1:b327db3eb9ce 88 analisis();
Mateom0104 1:b327db3eb9ce 89 //pc.printf(" Azul= %d \n ",val_color);
Mateom0104 1:b327db3eb9ce 90 val_b=val_color;
Mateom0104 1:b327db3eb9ce 91 wait_ms(100);
Mateom0104 1:b327db3eb9ce 92
Mateom0104 1:b327db3eb9ce 93
Mateom0104 1:b327db3eb9ce 94 s2=1;
Mateom0104 1:b327db3eb9ce 95 s3=1;
Mateom0104 1:b327db3eb9ce 96 analisis();
Mateom0104 1:b327db3eb9ce 97 //pc.printf(" Verde= %d \n",val_color);
Mateom0104 1:b327db3eb9ce 98 val_g=val_color;
Mateom0104 1:b327db3eb9ce 99 wait_ms(100);
Mateom0104 1:b327db3eb9ce 100
Mateom0104 1:b327db3eb9ce 101
Mateom0104 1:b327db3eb9ce 102 //Blanco
Mateom0104 1:b327db3eb9ce 103 if((val_r>=600047 && val_r<=600115) &&(val_g>=100051 && val_g<=100108) && (val_b>=100044 && val_b<=100086))
Mateom0104 1:b327db3eb9ce 104 {
Mateom0104 1:b327db3eb9ce 105 pc.printf(" Blanco \n");
Mateom0104 1:b327db3eb9ce 106 }
Mateom0104 1:b327db3eb9ce 107 //rojo
Mateom0104 1:b327db3eb9ce 108 if((val_r>=600116 && val_r<=600282) &&(val_g>=100305 && val_g<=100853) && (val_b>=100191 && val_b<=100550))
Mateom0104 1:b327db3eb9ce 109 {
Mateom0104 1:b327db3eb9ce 110 pc.printf(" Rojo \n");
Mateom0104 1:b327db3eb9ce 111 }
Mateom0104 1:b327db3eb9ce 112 //verde
Mateom0104 1:b327db3eb9ce 113
Mateom0104 1:b327db3eb9ce 114 if((val_r>=600283 && val_r<=600669) &&(val_g>=100143 && val_g<=100395) && (val_b>=100147 && val_b<=100409))
Mateom0104 1:b327db3eb9ce 115 {
Mateom0104 1:b327db3eb9ce 116 pc.printf(" Verde \n");
Mateom0104 1:b327db3eb9ce 117 }
Mateom0104 1:b327db3eb9ce 118
Mateom0104 1:b327db3eb9ce 119 //Azul
Mateom0104 1:b327db3eb9ce 120
Mateom0104 1:b327db3eb9ce 121 if((val_r>=600570 && val_r<=601153) &&(val_g>=100199 && val_g<=100553) && (val_b>=100103 && val_b<=100122))
Mateom0104 1:b327db3eb9ce 122 {
Mateom0104 1:b327db3eb9ce 123 pc.printf(" Azul \n");
Mateom0104 1:b327db3eb9ce 124 }
Mateom0104 1:b327db3eb9ce 125
Mateom0104 1:b327db3eb9ce 126 }
Mateom0104 1:b327db3eb9ce 127
Mateom0104 1:b327db3eb9ce 128 //////////////////////////////////////////////////////////////////////////////
Mateom0104 1:b327db3eb9ce 129 void color_interrupcion (void)
Mateom0104 1:b327db3eb9ce 130 {
Mateom0104 1:b327db3eb9ce 131
Mateom0104 1:b327db3eb9ce 132 switch(ch_color)
Mateom0104 1:b327db3eb9ce 133 {
Mateom0104 1:b327db3eb9ce 134 case 1: pmenos(); break;
Mateom0104 1:b327db3eb9ce 135 case 2: pmas(); break;
Mateom0104 1:b327db3eb9ce 136 case 3: giros(); break;
Mateom0104 1:b327db3eb9ce 137 default: pc.printf("Error \n");
Mateom0104 1:b327db3eb9ce 138
Mateom0104 1:b327db3eb9ce 139 }
Mateom0104 1:b327db3eb9ce 140 }
Mateom0104 1:b327db3eb9ce 141
Mateom0104 0:1006a6a7855b 142 ///////////////////////////////////////////////////////////////////////////////
Mateom0104 0:1006a6a7855b 143 void sendSPI(uint8_t d1, uint8_t d2)// envio de datos al max
Mateom0104 0:1006a6a7855b 144 {
Mateom0104 0:1006a6a7855b 145 deviceM.unlock();
Mateom0104 0:1006a6a7855b 146 ssel=0;
Mateom0104 0:1006a6a7855b 147 deviceM.write(d1);
Mateom0104 0:1006a6a7855b 148 deviceM.write(d2);
Mateom0104 1:b327db3eb9ce 149 ssel=1; deviceM.lock();
Mateom0104 0:1006a6a7855b 150 };
Mateom0104 0:1006a6a7855b 151 ///////////////////////////////////////////////////////////////////////////////
Mateom0104 0:1006a6a7855b 152 void borrar() // Borrar todos los datos de la matriz
Mateom0104 0:1006a6a7855b 153 {
Mateom0104 0:1006a6a7855b 154 int j;
Mateom0104 0:1006a6a7855b 155 for(j=1;j<9;j++)
Mateom0104 0:1006a6a7855b 156 {
Mateom0104 0:1006a6a7855b 157 sendSPI(j,0);
Mateom0104 0:1006a6a7855b 158 wait_ms(1);
Mateom0104 0:1006a6a7855b 159 }
Mateom0104 0:1006a6a7855b 160 }
Mateom0104 0:1006a6a7855b 161 ///////////////////////////////////////////////////////////////////////////////
Mateom0104 0:1006a6a7855b 162 void enviar() // Encargado de enviar la matriz completa
Mateom0104 0:1006a6a7855b 163 {
Mateom0104 0:1006a6a7855b 164 int i;
Mateom0104 0:1006a6a7855b 165
Mateom0104 0:1006a6a7855b 166 for(i=0;i<8;i++)
Mateom0104 0:1006a6a7855b 167 {
Mateom0104 0:1006a6a7855b 168 sendSPI(i+1,screen[i]);
Mateom0104 0:1006a6a7855b 169 }
Mateom0104 0:1006a6a7855b 170 }
Mateom0104 0:1006a6a7855b 171 ///////////////////////////////////////////////////////////////////////////////
Mateom0104 0:1006a6a7855b 172 void ver() // Informe de datos "no se usa "
Mateom0104 0:1006a6a7855b 173 {
Mateom0104 0:1006a6a7855b 174 int i;
Mateom0104 0:1006a6a7855b 175 for(i=0;i<8;i++)
Mateom0104 0:1006a6a7855b 176 {
Mateom0104 0:1006a6a7855b 177 pc.printf("posicion %d ",i);
Mateom0104 0:1006a6a7855b 178 pc.printf("= %d \n",screen[i]);
Mateom0104 0:1006a6a7855b 179 }
Mateom0104 0:1006a6a7855b 180 }
Mateom0104 0:1006a6a7855b 181 ///////////////////////////////////////////////////////////////////////////////
Mateom0104 0:1006a6a7855b 182 void escribir() // Guarda y compara los datos entrantes a la matriz y los que ya estaban
Mateom0104 0:1006a6a7855b 183 {
Mateom0104 0:1006a6a7855b 184 int i;
Mateom0104 0:1006a6a7855b 185
Mateom0104 0:1006a6a7855b 186 for(i=0;i<tamano;i++)
Mateom0104 0:1006a6a7855b 187 {
Mateom0104 0:1006a6a7855b 188 screen2[posicion-i]=(start[posicion-i] & 128);
Mateom0104 0:1006a6a7855b 189 start[posicion-i]=start[posicion-i] << 1;
Mateom0104 0:1006a6a7855b 190 }
Mateom0104 0:1006a6a7855b 191
Mateom0104 0:1006a6a7855b 192 //pc.printf("1 \n");
Mateom0104 0:1006a6a7855b 193 //ver();
Mateom0104 0:1006a6a7855b 194
Mateom0104 0:1006a6a7855b 195
Mateom0104 0:1006a6a7855b 196 for(i=0;i<tamano;i++)
Mateom0104 0:1006a6a7855b 197 {
Mateom0104 0:1006a6a7855b 198 screen[posicion-i]=((((screen[posicion-i]>>1) & ~(mascara-1)) | (screen[posicion-i] & (mascara-1))) | screen2[posicion-i] ) | (screen[posicion-i] & mascara) | (screen[posicion-i] & mascara*segundo);
Mateom0104 0:1006a6a7855b 199 }
Mateom0104 0:1006a6a7855b 200
Mateom0104 0:1006a6a7855b 201 //pc.printf("2 \n");
Mateom0104 0:1006a6a7855b 202 //ver();
Mateom0104 0:1006a6a7855b 203 enviar();
Mateom0104 0:1006a6a7855b 204 }
Mateom0104 0:1006a6a7855b 205 ///////////////////////////////////////////////////////////////////////////////
Mateom0104 0:1006a6a7855b 206 int ubicacion() //Limita el ingreso de posicion no mayor a 7
Mateom0104 0:1006a6a7855b 207 {
Mateom0104 0:1006a6a7855b 208 int a;
Mateom0104 0:1006a6a7855b 209 if((posicion_original+tamano) <= 8 && (posicion_original+tamano) >= 0 )
Mateom0104 0:1006a6a7855b 210 {
Mateom0104 0:1006a6a7855b 211 a=1;
Mateom0104 0:1006a6a7855b 212 }
Mateom0104 0:1006a6a7855b 213 else
Mateom0104 0:1006a6a7855b 214 {
Mateom0104 0:1006a6a7855b 215 //pc.printf("Error de posicion \n");
Mateom0104 0:1006a6a7855b 216 //pc.printf("Posicion original %d \n",posicion_original);
Mateom0104 0:1006a6a7855b 217 //pc.printf("tamano %d \n",tamano);
Mateom0104 0:1006a6a7855b 218 a=0;
Mateom0104 0:1006a6a7855b 219 }
Mateom0104 0:1006a6a7855b 220 return a;
Mateom0104 0:1006a6a7855b 221 }
Mateom0104 0:1006a6a7855b 222 ///////////////////////////////////////////////////////////////////////////////
Mateom0104 0:1006a6a7855b 223 void analisis() // Verifica la siguiente fila para saber si se puede desplazar
Mateom0104 0:1006a6a7855b 224 {
Mateom0104 0:1006a6a7855b 225 int i;
Mateom0104 0:1006a6a7855b 226 uint8_t a;
Mateom0104 0:1006a6a7855b 227
Mateom0104 0:1006a6a7855b 228 for(i=0;i<tamano;i++)
Mateom0104 0:1006a6a7855b 229 {
Mateom0104 0:1006a6a7855b 230 a=screen[posicion-i] & mascara;
Mateom0104 0:1006a6a7855b 231 // pc.printf("verificacion siguiente fila = %d \n ",a);
Mateom0104 0:1006a6a7855b 232 if(mascara==a)
Mateom0104 0:1006a6a7855b 233 {
Mateom0104 0:1006a6a7855b 234 i=tamano;
Mateom0104 0:1006a6a7855b 235 verifica=1;
Mateom0104 0:1006a6a7855b 236 }
Mateom0104 0:1006a6a7855b 237 else
Mateom0104 0:1006a6a7855b 238 {
Mateom0104 0:1006a6a7855b 239 verifica=0;
Mateom0104 0:1006a6a7855b 240 }
Mateom0104 0:1006a6a7855b 241 }
Mateom0104 0:1006a6a7855b 242 }
Mateom0104 0:1006a6a7855b 243 ////////////////////////////////////////////////////////////////////////////////
Mateom0104 0:1006a6a7855b 244 void analisis2() // Prueba
Mateom0104 0:1006a6a7855b 245 {
Mateom0104 0:1006a6a7855b 246 int i;
Mateom0104 0:1006a6a7855b 247 uint8_t a;
Mateom0104 0:1006a6a7855b 248
Mateom0104 0:1006a6a7855b 249 for(i=0;i<tamano;i++)
Mateom0104 0:1006a6a7855b 250 {
Mateom0104 0:1006a6a7855b 251 a=screen[posicion-i] & mascara;
Mateom0104 0:1006a6a7855b 252 a= a & ((screen[posicion-i]>>1) & ~(mascara - 1));
Mateom0104 0:1006a6a7855b 253 //pc.printf("verificacion siguiente fila = %d \n ",a);
Mateom0104 0:1006a6a7855b 254 if(a!=0)
Mateom0104 0:1006a6a7855b 255 {
Mateom0104 0:1006a6a7855b 256 i=tamano;
Mateom0104 0:1006a6a7855b 257 verifica=1;
Mateom0104 0:1006a6a7855b 258 segundo=1;
Mateom0104 0:1006a6a7855b 259 if(verificar2==1)
Mateom0104 0:1006a6a7855b 260 {
Mateom0104 0:1006a6a7855b 261 verificar2=0;
Mateom0104 0:1006a6a7855b 262 verifica=0;
Mateom0104 0:1006a6a7855b 263 segundo=2;
Mateom0104 0:1006a6a7855b 264 }
Mateom0104 0:1006a6a7855b 265 }
Mateom0104 0:1006a6a7855b 266 else
Mateom0104 0:1006a6a7855b 267 {
Mateom0104 0:1006a6a7855b 268 segundo=1;
Mateom0104 0:1006a6a7855b 269 verifica=0;
Mateom0104 0:1006a6a7855b 270 }
Mateom0104 0:1006a6a7855b 271 }
Mateom0104 0:1006a6a7855b 272
Mateom0104 0:1006a6a7855b 273 }
Mateom0104 0:1006a6a7855b 274 ///////////////////////////////////////////////////////////////////////////////
Mateom0104 0:1006a6a7855b 275 void play () // Funcion encargada de determianr el estado de la mascara
Mateom0104 0:1006a6a7855b 276 {
Mateom0104 1:b327db3eb9ce 277
Mateom0104 1:b327db3eb9ce 278 pc.attach(&Rx_interrupt, Serial::RxIrq);
Mateom0104 0:1006a6a7855b 279 int a=1;
Mateom0104 0:1006a6a7855b 280 mascara=128;
Mateom0104 0:1006a6a7855b 281 //pc.printf("Posicion original 1 %d \n",posicion_original);
Mateom0104 0:1006a6a7855b 282 a=ubicacion();
Mateom0104 0:1006a6a7855b 283 while(a==1)
Mateom0104 0:1006a6a7855b 284 {
Mateom0104 0:1006a6a7855b 285 analisis2();
Mateom0104 0:1006a6a7855b 286
Mateom0104 0:1006a6a7855b 287 if(verificacion==1)
Mateom0104 0:1006a6a7855b 288 {
Mateom0104 0:1006a6a7855b 289 return;
Mateom0104 0:1006a6a7855b 290 }
Mateom0104 0:1006a6a7855b 291
Mateom0104 0:1006a6a7855b 292
Mateom0104 0:1006a6a7855b 293 if (verifica==1 || mascara==0)
Mateom0104 0:1006a6a7855b 294 {
Mateom0104 0:1006a6a7855b 295 a=0;
Mateom0104 0:1006a6a7855b 296
Mateom0104 0:1006a6a7855b 297 }
Mateom0104 0:1006a6a7855b 298 else
Mateom0104 0:1006a6a7855b 299 {
Mateom0104 0:1006a6a7855b 300
Mateom0104 0:1006a6a7855b 301 escribir();
Mateom0104 0:1006a6a7855b 302
Mateom0104 0:1006a6a7855b 303 if(verificacion==1)
Mateom0104 0:1006a6a7855b 304 {
Mateom0104 0:1006a6a7855b 305 return;
Mateom0104 0:1006a6a7855b 306 }
Mateom0104 0:1006a6a7855b 307
Mateom0104 0:1006a6a7855b 308
Mateom0104 0:1006a6a7855b 309 if(mascara==mascarax)
Mateom0104 0:1006a6a7855b 310 {
Mateom0104 1:b327db3eb9ce 311 velocidad=rapido;
Mateom0104 1:b327db3eb9ce 312
Mateom0104 1:b327db3eb9ce 313 }
Mateom0104 1:b327db3eb9ce 314
Mateom0104 1:b327db3eb9ce 315 wait_ms(velocidad);
Mateom0104 1:b327db3eb9ce 316 /*
Mateom0104 1:b327db3eb9ce 317 for(int ch=0;ch<=1;ch++)
Mateom0104 1:b327db3eb9ce 318 {
Mateom0104 1:b327db3eb9ce 319 datos_color();
Mateom0104 1:b327db3eb9ce 320 wait_ms(1);
Mateom0104 1:b327db3eb9ce 321 if(vericolor==1)
Mateom0104 1:b327db3eb9ce 322 {
Mateom0104 1:b327db3eb9ce 323 color_interrupcion();
Mateom0104 1:b327db3eb9ce 324 }
Mateom0104 1:b327db3eb9ce 325 }
Mateom0104 1:b327db3eb9ce 326 */
Mateom0104 0:1006a6a7855b 327
Mateom0104 0:1006a6a7855b 328 mascara=mascara/2;
Mateom0104 0:1006a6a7855b 329
Mateom0104 0:1006a6a7855b 330
Mateom0104 0:1006a6a7855b 331
Mateom0104 0:1006a6a7855b 332 }
Mateom0104 0:1006a6a7855b 333 }
Mateom0104 0:1006a6a7855b 334 }
Mateom0104 0:1006a6a7855b 335
Mateom0104 0:1006a6a7855b 336 ///////////////////////////////////////////////////////////////////////////////
Mateom0104 0:1006a6a7855b 337
Mateom0104 0:1006a6a7855b 338 int main() { // fucnion principal
Mateom0104 0:1006a6a7855b 339 pc.baud(9600);
Mateom0104 1:b327db3eb9ce 340
Mateom0104 0:1006a6a7855b 341 sendSPI(0x0c,1);
Mateom0104 0:1006a6a7855b 342 sendSPI(0x0F,1);
Mateom0104 0:1006a6a7855b 343 wait (1);
Mateom0104 0:1006a6a7855b 344
Mateom0104 0:1006a6a7855b 345 sendSPI(0x0F,0);
Mateom0104 0:1006a6a7855b 346 wait (1);
Mateom0104 0:1006a6a7855b 347 sendSPI(0xB,0x7);
Mateom0104 0:1006a6a7855b 348 borrar();
Mateom0104 1:b327db3eb9ce 349
Mateom0104 1:b327db3eb9ce 350 led_col=1;
Mateom0104 1:b327db3eb9ce 351 //escala de frecuencia a 20%
Mateom0104 1:b327db3eb9ce 352 s0=1;
Mateom0104 1:b327db3eb9ce 353 s1=0;
Mateom0104 0:1006a6a7855b 354
Mateom0104 1:b327db3eb9ce 355 int n;
Mateom0104 1:b327db3eb9ce 356
Mateom0104 1:b327db3eb9ce 357 int inicio , fin;
Mateom0104 1:b327db3eb9ce 358
Mateom0104 0:1006a6a7855b 359
Mateom0104 0:1006a6a7855b 360 while(1){
Mateom0104 0:1006a6a7855b 361
Mateom0104 0:1006a6a7855b 362
Mateom0104 0:1006a6a7855b 363 if(verificacion==0)
Mateom0104 0:1006a6a7855b 364 {
Mateom0104 1:b327db3eb9ce 365 /*
Mateom0104 0:1006a6a7855b 366 n=10;
Mateom0104 0:1006a6a7855b 367 while( n>6)
Mateom0104 0:1006a6a7855b 368 {
Mateom0104 0:1006a6a7855b 369 n=rand ()% 16;
Mateom0104 0:1006a6a7855b 370 // pc.printf("%d ",n);
Mateom0104 0:1006a6a7855b 371 }
Mateom0104 0:1006a6a7855b 372 posicion=3;
Mateom0104 0:1006a6a7855b 373 giro = 0;
Mateom0104 0:1006a6a7855b 374 wait(0.2);
Mateom0104 0:1006a6a7855b 375 mascarax=128;
Mateom0104 1:b327db3eb9ce 376 */
Mateom0104 1:b327db3eb9ce 377 pc.attach(0, Serial::RxIrq);
Mateom0104 1:b327db3eb9ce 378 inicio=pc.getc();
Mateom0104 1:b327db3eb9ce 379
Mateom0104 1:b327db3eb9ce 380 if(inicio==60)
Mateom0104 1:b327db3eb9ce 381 {
Mateom0104 1:b327db3eb9ce 382
Mateom0104 1:b327db3eb9ce 383
Mateom0104 1:b327db3eb9ce 384
Mateom0104 1:b327db3eb9ce 385 mascarax=128;
Mateom0104 1:b327db3eb9ce 386 //pc.printf("Ingrese el numero de la figura \n");
Mateom0104 1:b327db3eb9ce 387 inicio=60;
Mateom0104 1:b327db3eb9ce 388
Mateom0104 1:b327db3eb9ce 389 n = pc.getc();
Mateom0104 1:b327db3eb9ce 390 //pc.printf("figura %d \n ",n);
Mateom0104 1:b327db3eb9ce 391
Mateom0104 1:b327db3eb9ce 392 //pc.printf("Ingrese el numero de angulo de giro \n");
Mateom0104 1:b327db3eb9ce 393 giro = pc.getc();
Mateom0104 1:b327db3eb9ce 394 //pc.printf("giro %d \n ",giro);
Mateom0104 1:b327db3eb9ce 395
Mateom0104 1:b327db3eb9ce 396 //pc.printf("Ingrese la posicion \n");
Mateom0104 1:b327db3eb9ce 397 posicion = pc.getc();
Mateom0104 1:b327db3eb9ce 398 //pc.printf("posicion %d \n ",posicion);
Mateom0104 1:b327db3eb9ce 399
Mateom0104 1:b327db3eb9ce 400 fin=pc.getc();
Mateom0104 1:b327db3eb9ce 401 wait(0.2);
Mateom0104 1:b327db3eb9ce 402 }
Mateom0104 0:1006a6a7855b 403 }
Mateom0104 0:1006a6a7855b 404 else
Mateom0104 0:1006a6a7855b 405 {
Mateom0104 0:1006a6a7855b 406 verificacion=0;
Mateom0104 0:1006a6a7855b 407 posicion=posicion_original;
Mateom0104 0:1006a6a7855b 408 }
Mateom0104 0:1006a6a7855b 409
Mateom0104 1:b327db3eb9ce 410 if((inicio==60) && (fin==62))
Mateom0104 1:b327db3eb9ce 411 {
Mateom0104 0:1006a6a7855b 412 switch(n)
Mateom0104 0:1006a6a7855b 413 {
Mateom0104 0:1006a6a7855b 414 case 0: a(giro); play(); break;
Mateom0104 0:1006a6a7855b 415
Mateom0104 0:1006a6a7855b 416 case 1: b(giro); play(); break;
Mateom0104 0:1006a6a7855b 417
Mateom0104 0:1006a6a7855b 418 case 2: c(giro); play(); break;
Mateom0104 0:1006a6a7855b 419
Mateom0104 0:1006a6a7855b 420 case 3: d(giro); play(); break;
Mateom0104 0:1006a6a7855b 421
Mateom0104 0:1006a6a7855b 422 case 4: e(giro); play(); break;
Mateom0104 0:1006a6a7855b 423
Mateom0104 0:1006a6a7855b 424 case 5: f(giro); play(); break;
Mateom0104 0:1006a6a7855b 425
Mateom0104 0:1006a6a7855b 426 case 6: g(giro); play(); break;
Mateom0104 0:1006a6a7855b 427
Mateom0104 0:1006a6a7855b 428 default: pc.printf("Error en figura \n");
Mateom0104 0:1006a6a7855b 429 }
Mateom0104 1:b327db3eb9ce 430 }
Mateom0104 0:1006a6a7855b 431 }
Mateom0104 0:1006a6a7855b 432 }
Mateom0104 0:1006a6a7855b 433 ////////////////////////////////////////////////////////////////////////////////////////////////
Mateom0104 0:1006a6a7855b 434 void Rx_interrupt() {
Mateom0104 0:1006a6a7855b 435
Mateom0104 0:1006a6a7855b 436 char d = pc.getc();
Mateom0104 0:1006a6a7855b 437 pc.printf("numero %d\n",d);
Mateom0104 0:1006a6a7855b 438
Mateom0104 0:1006a6a7855b 439
Mateom0104 0:1006a6a7855b 440 switch(d)
Mateom0104 0:1006a6a7855b 441 {
Mateom0104 0:1006a6a7855b 442 case 97: pmenos(); break;
Mateom0104 0:1006a6a7855b 443 case 100: pmas(); break;
Mateom0104 0:1006a6a7855b 444 case 119: giros(); break;
Mateom0104 0:1006a6a7855b 445 default: pc.printf("Error \n");
Mateom0104 0:1006a6a7855b 446
Mateom0104 0:1006a6a7855b 447 }
Mateom0104 0:1006a6a7855b 448
Mateom0104 0:1006a6a7855b 449 return;
Mateom0104 0:1006a6a7855b 450 }
Mateom0104 0:1006a6a7855b 451
Mateom0104 0:1006a6a7855b 452