Selecciona los juegos

Dependencies:   mbed

Committer:
djinn77
Date:
Wed Nov 21 06:43:48 2018 +0000
Revision:
3:814ec214c941
Parent:
2:0c22820ab1d1
Child:
4:4d6b70e3dda3
Selector se queda fijo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
djinn77 0:6f394b1e3cf7 1
djinn77 0:6f394b1e3cf7 2 #include "mbed.h"
djinn77 0:6f394b1e3cf7 3 #include "piezas.h"
djinn77 0:6f394b1e3cf7 4 #include "avenidas.h"
djinn77 1:abc2af4246eb 5 //#define DEBUG 1
djinn77 0:6f394b1e3cf7 6 Serial pc(USBTX,USBRX);
djinn77 0:6f394b1e3cf7 7 SPI deviceM(PB_5, PB_4, PB_3); // D4(gris), Ninguno, D3(azul)
djinn77 0:6f394b1e3cf7 8 DigitalOut ssel (PA_4); // A2(morado)
djinn77 0:6f394b1e3cf7 9 Ticker tp;
djinn77 0:6f394b1e3cf7 10 int printjugador =1;
djinn77 0:6f394b1e3cf7 11
djinn77 0:6f394b1e3cf7 12 // Definiendo Botones
djinn77 0:6f394b1e3cf7 13
djinn77 3:814ec214c941 14 AnalogIn vry(A3); // Lee el eje x del jostick
djinn77 3:814ec214c941 15 AnalogIn vrx(A4); // Lee el eje y del jostick
djinn77 3:814ec214c941 16 InterruptIn pulsador_abj(D8); // Lee el boton del jostick
djinn77 3:814ec214c941 17 DigitalIn sel(D7); //hace la seleccion de juego
djinn77 2:0c22820ab1d1 18 PwmOut buzzer(A1);
djinn77 0:6f394b1e3cf7 19
djinn77 0:6f394b1e3cf7 20 // Define numeros
djinn77 0:6f394b1e3cf7 21 uint16_t* global_disp={0};
djinn77 0:6f394b1e3cf7 22
djinn77 0:6f394b1e3cf7 23
djinn77 0:6f394b1e3cf7 24 // Funciones de la pantalla principal
djinn77 0:6f394b1e3cf7 25
djinn77 0:6f394b1e3cf7 26 void calle_funtion();
djinn77 3:814ec214c941 27 void tetris();
djinn77 0:6f394b1e3cf7 28
djinn77 0:6f394b1e3cf7 29 // funciones de cruzando la calle
djinn77 0:6f394b1e3cf7 30
djinn77 0:6f394b1e3cf7 31 void printstatus_cll(); // Define el prototipo imprime el juego en pantalla
djinn77 0:6f394b1e3cf7 32 void desplazar_der_cll(); // Define el prototipo que desplaza el jugador a la der
djinn77 0:6f394b1e3cf7 33 void desplazar_izq_cll(); // Define el prototipo que desplaza el jugador a la izq
djinn77 0:6f394b1e3cf7 34 void arriba_cll(); // Define el prototipo que desplaza el jugador hacia arriba
djinn77 0:6f394b1e3cf7 35 void pista_cll(); // Define el prototipo
djinn77 0:6f394b1e3cf7 36 void puntaje_cll(); // Define el prototipo que cuenta el puntaje
djinn77 0:6f394b1e3cf7 37 void impresion(); // Define el prototipo
djinn77 0:6f394b1e3cf7 38 void aumentar_dificultad_cll(); // Define el prototipo que aumenta la velocidad de los vehiculos
djinn77 0:6f394b1e3cf7 39 void reiniciar_calle();
djinn77 0:6f394b1e3cf7 40
djinn77 1:abc2af4246eb 41 // funciones de tetris
djinn77 1:abc2af4246eb 42
djinn77 1:abc2af4246eb 43 void captura_datos_tx();
djinn77 1:abc2af4246eb 44 void read_tx();
djinn77 1:abc2af4246eb 45 void desplazar_tx();
djinn77 1:abc2af4246eb 46 void captura_matriz_tx();
djinn77 1:abc2af4246eb 47 void desplazar_izq_tx();
djinn77 1:abc2af4246eb 48 void desplazar_der_tx();
djinn77 1:abc2af4246eb 49 void aum_velocidad_tx();
djinn77 1:abc2af4246eb 50 void perder_tx();
djinn77 1:abc2af4246eb 51
djinn77 1:abc2af4246eb 52 uint16_t* girar(uint16_t* pieza, int posicion);
djinn77 1:abc2af4246eb 53 // Declaracion de variables tetris
djinn77 1:abc2af4246eb 54
djinn77 1:abc2af4246eb 55 int8_t posicion= 0, figura= 0, giro= 0;
djinn77 1:abc2af4246eb 56 uint16_t memoria[8]={0};
djinn77 1:abc2af4246eb 57 uint16_t* imprimir;
djinn77 1:abc2af4246eb 58 uint16_t *borde=0;
djinn77 1:abc2af4246eb 59 int8_t corrimiento=0;
djinn77 1:abc2af4246eb 60 // Delcaraion de limites variables tetris
djinn77 1:abc2af4246eb 61
djinn77 1:abc2af4246eb 62 int8_t liminf=0, limizq=0, limder=0;
djinn77 1:abc2af4246eb 63 // Habilitadores variables tetris
djinn77 1:abc2af4246eb 64
djinn77 1:abc2af4246eb 65 int enableizq=1;
djinn77 1:abc2af4246eb 66 int enableder=1;
djinn77 1:abc2af4246eb 67 int bajando=1;
djinn77 1:abc2af4246eb 68
djinn77 0:6f394b1e3cf7 69 // Definicion de Variables de la calle
djinn77 0:6f394b1e3cf7 70
djinn77 0:6f394b1e3cf7 71 uint16_t* nivel;
djinn77 0:6f394b1e3cf7 72 uint16_t* jugador;
djinn77 0:6f394b1e3cf7 73 uint16_t* victorias;
djinn77 0:6f394b1e3cf7 74 float velocidad = 1.0;
djinn77 0:6f394b1e3cf7 75 float meas_vx;
djinn77 0:6f394b1e3cf7 76 float meas_vy;
djinn77 0:6f394b1e3cf7 77 uint8_t ubicacion;
djinn77 0:6f394b1e3cf7 78 uint8_t conteo = 2;
djinn77 0:6f394b1e3cf7 79
djinn77 0:6f394b1e3cf7 80 // Funciones pantalla principal
djinn77 0:6f394b1e3cf7 81
djinn77 0:6f394b1e3cf7 82 void pantalla_pr();
djinn77 2:0c22820ab1d1 83 void himno_legria();
djinn77 0:6f394b1e3cf7 84
djinn77 0:6f394b1e3cf7 85 void sendSPI(uint8_t d1, uint8_t d2)
djinn77 0:6f394b1e3cf7 86 {
djinn77 0:6f394b1e3cf7 87 deviceM.unlock();
djinn77 0:6f394b1e3cf7 88 ssel=0;
djinn77 0:6f394b1e3cf7 89 deviceM.write(d1);
djinn77 0:6f394b1e3cf7 90 deviceM.write(d2);
djinn77 0:6f394b1e3cf7 91 ssel=1;
djinn77 0:6f394b1e3cf7 92 deviceM.lock();
djinn77 0:6f394b1e3cf7 93 };
djinn77 0:6f394b1e3cf7 94
djinn77 0:6f394b1e3cf7 95 void inicializar_matriz(){
djinn77 0:6f394b1e3cf7 96 sendSPI(0x0c,1);
djinn77 0:6f394b1e3cf7 97 sendSPI(0x0b,7);
djinn77 0:6f394b1e3cf7 98 sendSPI(0x09,0); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ
djinn77 0:6f394b1e3cf7 99 sendSPI(0x0A,0x00); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ
djinn77 0:6f394b1e3cf7 100
djinn77 0:6f394b1e3cf7 101 int i;
djinn77 0:6f394b1e3cf7 102 for (i=0;i<2;i++){
djinn77 0:6f394b1e3cf7 103 sendSPI(0x0F,1);
djinn77 0:6f394b1e3cf7 104 wait (0.5);
djinn77 0:6f394b1e3cf7 105 sendSPI(0x0F,0);
djinn77 0:6f394b1e3cf7 106 wait (0.5);
djinn77 0:6f394b1e3cf7 107 }
djinn77 0:6f394b1e3cf7 108
djinn77 0:6f394b1e3cf7 109 }
djinn77 0:6f394b1e3cf7 110
djinn77 1:abc2af4246eb 111 void debuging(char*s,...){
djinn77 1:abc2af4246eb 112
djinn77 1:abc2af4246eb 113 #if DEBUG
djinn77 1:abc2af4246eb 114 pc.printf(s);
djinn77 1:abc2af4246eb 115 #endif
djinn77 1:abc2af4246eb 116
djinn77 1:abc2af4246eb 117 }
djinn77 0:6f394b1e3cf7 118
djinn77 0:6f394b1e3cf7 119
djinn77 3:814ec214c941 120 int main() { // ESTA ES LA FUNCION DE SELECCION
djinn77 0:6f394b1e3cf7 121
djinn77 0:6f394b1e3cf7 122 inicializar_matriz();
djinn77 0:6f394b1e3cf7 123 pc.baud(38400);
djinn77 3:814ec214c941 124 int selec_p=0;
djinn77 0:6f394b1e3cf7 125
djinn77 0:6f394b1e3cf7 126 while(1){
djinn77 0:6f394b1e3cf7 127
djinn77 3:814ec214c941 128
djinn77 0:6f394b1e3cf7 129 meas_vx = vrx.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje X
djinn77 0:6f394b1e3cf7 130
djinn77 0:6f394b1e3cf7 131 if(meas_vx < 1600)
djinn77 3:814ec214c941 132 selec_p++;
djinn77 3:814ec214c941 133 else if(meas_vx > 1700)
djinn77 3:814ec214c941 134 selec_p--;
djinn77 3:814ec214c941 135
djinn77 3:814ec214c941 136 if(selec_p > 2)
djinn77 3:814ec214c941 137 selec_p=0;
djinn77 3:814ec214c941 138 else if (selec_p < 0)
djinn77 3:814ec214c941 139 selec_p=2;
djinn77 3:814ec214c941 140
djinn77 3:814ec214c941 141 if(selec_p == 0)
djinn77 3:814ec214c941 142 global_disp = SELEC;
djinn77 3:814ec214c941 143 else if (selec_p == 1)
djinn77 3:814ec214c941 144 global_disp = UNO;
djinn77 3:814ec214c941 145 else
djinn77 3:814ec214c941 146 global_disp = DOS;
djinn77 3:814ec214c941 147 wait(0.5);
djinn77 3:814ec214c941 148 /* if(meas_vx < 1600)
djinn77 0:6f394b1e3cf7 149 global_disp = DOS, selec_p=2;
djinn77 0:6f394b1e3cf7 150 else if (meas_vx < 1700)
djinn77 0:6f394b1e3cf7 151 global_disp = SELEC, selec_p=0;
djinn77 0:6f394b1e3cf7 152 else
djinn77 0:6f394b1e3cf7 153 global_disp = UNO, selec_p=1;
djinn77 0:6f394b1e3cf7 154
djinn77 3:814ec214c941 155 */
djinn77 3:814ec214c941 156 pantalla_pr(); // LLAMA A LA FUNCION QUE DIBUJA EL NUMERO
djinn77 0:6f394b1e3cf7 157
djinn77 0:6f394b1e3cf7 158 if (selec_p==1 && sel==1)
djinn77 0:6f394b1e3cf7 159 calle_funtion();
djinn77 1:abc2af4246eb 160 else if (selec_p==2 && sel==1)
djinn77 1:abc2af4246eb 161 tetris();
djinn77 2:0c22820ab1d1 162 else if (selec_p==0 && sel==1)
djinn77 2:0c22820ab1d1 163 himno_legria();
djinn77 0:6f394b1e3cf7 164 }
djinn77 0:6f394b1e3cf7 165
djinn77 0:6f394b1e3cf7 166 }
djinn77 0:6f394b1e3cf7 167
djinn77 0:6f394b1e3cf7 168
djinn77 0:6f394b1e3cf7 169
djinn77 0:6f394b1e3cf7 170 void pantalla_pr(){
djinn77 0:6f394b1e3cf7 171 for(int i= 1;i<=8;i++){
djinn77 0:6f394b1e3cf7 172 sendSPI(i, global_disp[i-1]);
djinn77 0:6f394b1e3cf7 173 }
djinn77 0:6f394b1e3cf7 174 }
djinn77 0:6f394b1e3cf7 175
djinn77 0:6f394b1e3cf7 176 void calle_funtion(){
djinn77 0:6f394b1e3cf7 177
djinn77 0:6f394b1e3cf7 178 while(1){
djinn77 0:6f394b1e3cf7 179
djinn77 0:6f394b1e3cf7 180 nivel= AV_1; // Asigna el trasado de las calles al juego
djinn77 0:6f394b1e3cf7 181 victorias=puntos; // Asigna los puntos acumulados en la pantalla inicia en 0
djinn77 0:6f394b1e3cf7 182 jugador=player; // Asigna la forma del jugador
djinn77 0:6f394b1e3cf7 183 tp.attach(&printstatus_cll,0.2); // MIRAR para que sirve
djinn77 0:6f394b1e3cf7 184 ubicacion=1; // Inicializa la varibale que cuenta la posicion del jugador
djinn77 0:6f394b1e3cf7 185
djinn77 0:6f394b1e3cf7 186
djinn77 0:6f394b1e3cf7 187
djinn77 0:6f394b1e3cf7 188 while(1){
djinn77 0:6f394b1e3cf7 189
djinn77 0:6f394b1e3cf7 190 meas_vx = vrx.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje X
djinn77 0:6f394b1e3cf7 191 meas_vy = vry.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje Y
djinn77 0:6f394b1e3cf7 192
djinn77 0:6f394b1e3cf7 193 //------ realiza el corriemiento del vector hacia la izq y der respectivamente.
djinn77 0:6f394b1e3cf7 194
djinn77 0:6f394b1e3cf7 195 if (meas_vx < 1600) // si se cumple esta condicion el jugador se desplaza a la izq
djinn77 0:6f394b1e3cf7 196 desplazar_izq_cll();
djinn77 0:6f394b1e3cf7 197 else if (meas_vx > 1700) // si se cumple esta condicion el jugador se desplaza a la der
djinn77 0:6f394b1e3cf7 198 desplazar_der_cll();
djinn77 0:6f394b1e3cf7 199
djinn77 0:6f394b1e3cf7 200 //------ mueve a el jugador hacia arriba en el mapa
djinn77 0:6f394b1e3cf7 201
djinn77 0:6f394b1e3cf7 202 if(meas_vy < 1550){
djinn77 0:6f394b1e3cf7 203 arriba_cll(); // hace el llamado a la funcion que mueve al jugador a la parte superior
djinn77 0:6f394b1e3cf7 204 ubicacion++; // cada vez que se ejecuta actualiza la posicion del jugador en el mapa
djinn77 0:6f394b1e3cf7 205 pc.printf("\n ubicacion:\n %i",ubicacion); // imprime la ubicacion del jugador en el puerto serial
djinn77 0:6f394b1e3cf7 206 if(ubicacion==7) // si la posicion del jugador es igual a 7 ejecuta la funcion puntaje_cll();
djinn77 0:6f394b1e3cf7 207 puntaje_cll();
djinn77 0:6f394b1e3cf7 208 }
djinn77 0:6f394b1e3cf7 209
djinn77 0:6f394b1e3cf7 210 // ----- El siguiente ciclo realiza el desplazamiento de los vehiculos
djinn77 0:6f394b1e3cf7 211 pista_cll();
djinn77 0:6f394b1e3cf7 212
djinn77 0:6f394b1e3cf7 213 wait(velocidad); // Velocidad del juego
djinn77 0:6f394b1e3cf7 214
djinn77 0:6f394b1e3cf7 215 }
djinn77 0:6f394b1e3cf7 216
djinn77 0:6f394b1e3cf7 217
djinn77 0:6f394b1e3cf7 218
djinn77 0:6f394b1e3cf7 219
djinn77 0:6f394b1e3cf7 220 }
djinn77 0:6f394b1e3cf7 221
djinn77 0:6f394b1e3cf7 222
djinn77 0:6f394b1e3cf7 223
djinn77 0:6f394b1e3cf7 224 }
djinn77 0:6f394b1e3cf7 225
djinn77 0:6f394b1e3cf7 226 void desplazar_der_cll(){ // Esta funcion desplaza al jugador hacia la derecha
djinn77 0:6f394b1e3cf7 227
djinn77 0:6f394b1e3cf7 228 int der = jugador[7];
djinn77 0:6f394b1e3cf7 229 for(int i= 7; i>=0;i--){
djinn77 0:6f394b1e3cf7 230 jugador[i]=jugador[i-1];
djinn77 0:6f394b1e3cf7 231 }
djinn77 0:6f394b1e3cf7 232 jugador[0] = der;
djinn77 0:6f394b1e3cf7 233
djinn77 0:6f394b1e3cf7 234 }
djinn77 0:6f394b1e3cf7 235
djinn77 0:6f394b1e3cf7 236 void desplazar_izq_cll(){ // Esta funcion desplaza al jugador hacia la izq
djinn77 0:6f394b1e3cf7 237
djinn77 0:6f394b1e3cf7 238 int izq = jugador[0];
djinn77 0:6f394b1e3cf7 239 for(int i= 0; i<8;i++){
djinn77 0:6f394b1e3cf7 240 jugador[i]=jugador[i+1];
djinn77 0:6f394b1e3cf7 241 }
djinn77 0:6f394b1e3cf7 242 jugador[7] = izq;
djinn77 0:6f394b1e3cf7 243
djinn77 0:6f394b1e3cf7 244 }
djinn77 0:6f394b1e3cf7 245
djinn77 0:6f394b1e3cf7 246 void arriba_cll(){ // Esta funcion desplaza al jugador hacia arriba
djinn77 0:6f394b1e3cf7 247
djinn77 0:6f394b1e3cf7 248 int arb = 1;
djinn77 0:6f394b1e3cf7 249 for(int i= 0; i<8;i++){
djinn77 0:6f394b1e3cf7 250 jugador[i]= jugador[i] << arb;
djinn77 0:6f394b1e3cf7 251 }
djinn77 0:6f394b1e3cf7 252 arb++;
djinn77 0:6f394b1e3cf7 253
djinn77 0:6f394b1e3cf7 254 }
djinn77 0:6f394b1e3cf7 255
djinn77 0:6f394b1e3cf7 256 void pista_cll(){ // Esta funcion ejecuta el movimiento de los vehiculos
djinn77 0:6f394b1e3cf7 257
djinn77 0:6f394b1e3cf7 258 int aux = nivel[0];
djinn77 0:6f394b1e3cf7 259 for(int i= 0; i<8;i++){
djinn77 0:6f394b1e3cf7 260 nivel[i]=nivel[i+1];
djinn77 0:6f394b1e3cf7 261 }
djinn77 0:6f394b1e3cf7 262 nivel[7] = aux;
djinn77 0:6f394b1e3cf7 263
djinn77 0:6f394b1e3cf7 264 }
djinn77 0:6f394b1e3cf7 265
djinn77 0:6f394b1e3cf7 266 void puntaje_cll(){ // Esta funcion hace el conteo de los puntos ganados
djinn77 0:6f394b1e3cf7 267
djinn77 0:6f394b1e3cf7 268 victorias[conteo]=0x80; // cada vez que se llega al otro lado de la calle suma 1 punto que se visualiza en pantalla
djinn77 0:6f394b1e3cf7 269 for(int i= 0; i<8;i++){ // Este ciclo for regresa al jugador a la pos 1
djinn77 0:6f394b1e3cf7 270 jugador[i]= jugador[i] >> 6;
djinn77 0:6f394b1e3cf7 271 }
djinn77 0:6f394b1e3cf7 272 ubicacion=1; // Renicializa la pos del jugador
djinn77 0:6f394b1e3cf7 273 conteo++; // Cuenta cuantas veces a llegado el jugador al otro lado hasta un maximo de 4
djinn77 0:6f394b1e3cf7 274 if(conteo == 6){ // cuando el conteo es igual a 6 se llama a la funcion aumentar dificultad
djinn77 0:6f394b1e3cf7 275 aumentar_dificultad_cll();
djinn77 0:6f394b1e3cf7 276 }
djinn77 0:6f394b1e3cf7 277
djinn77 0:6f394b1e3cf7 278
djinn77 0:6f394b1e3cf7 279 }
djinn77 0:6f394b1e3cf7 280
djinn77 0:6f394b1e3cf7 281 void aumentar_dificultad_cll(){ // Esta funcion aumenta la dificultad del juego
djinn77 0:6f394b1e3cf7 282
djinn77 0:6f394b1e3cf7 283 for(int i= 0; i<8;i++){ // Regresa el valor de las victorias acumuladas a 0
djinn77 0:6f394b1e3cf7 284 victorias[i]= 0;
djinn77 0:6f394b1e3cf7 285 }
djinn77 0:6f394b1e3cf7 286 velocidad = velocidad - 0.1; // aumenta la velocidad del juego
djinn77 0:6f394b1e3cf7 287 conteo=2; // reinicializa el conteo
djinn77 0:6f394b1e3cf7 288
djinn77 0:6f394b1e3cf7 289
djinn77 0:6f394b1e3cf7 290 }
djinn77 0:6f394b1e3cf7 291 void reiniciar_calle(){ // Esta condicion renicia el sistema al estrellarce con un vehiculo
djinn77 0:6f394b1e3cf7 292
djinn77 0:6f394b1e3cf7 293 NVIC_SystemReset();
djinn77 0:6f394b1e3cf7 294
djinn77 0:6f394b1e3cf7 295 }
djinn77 0:6f394b1e3cf7 296 void printstatus_cll() // Esta funcion es la encargada de la impresion
djinn77 0:6f394b1e3cf7 297 {
djinn77 0:6f394b1e3cf7 298
djinn77 0:6f394b1e3cf7 299 for(int j= 1; j<=8;j++) // Este cilo imprime en pantalla
djinn77 0:6f394b1e3cf7 300 if (printjugador){
djinn77 0:6f394b1e3cf7 301 sendSPI(j, nivel[j-1]|jugador[j-1]| victorias[j-1]); // CADA VEZ que se vea en pantalla SPI se mostrar un dato en pantalla
djinn77 0:6f394b1e3cf7 302 if((nivel[j-1] & jugador[j-1]) != 0){ // SI este if se cumple el jugador ha sido chocado
djinn77 0:6f394b1e3cf7 303 reiniciar_calle(); // Ee se hace llamado a la funcion reinicio
djinn77 0:6f394b1e3cf7 304 }
djinn77 0:6f394b1e3cf7 305
djinn77 0:6f394b1e3cf7 306 }else{
djinn77 0:6f394b1e3cf7 307 sendSPI(j, nivel[j-1]| victorias[j-1]);
djinn77 0:6f394b1e3cf7 308 }
djinn77 0:6f394b1e3cf7 309
djinn77 0:6f394b1e3cf7 310 printjugador =!printjugador;
djinn77 1:abc2af4246eb 311 }
djinn77 1:abc2af4246eb 312
djinn77 1:abc2af4246eb 313
djinn77 1:abc2af4246eb 314 void tetris(){
djinn77 1:abc2af4246eb 315
djinn77 1:abc2af4246eb 316 for(int i= 1;i<=8;i++){
djinn77 1:abc2af4246eb 317 sendSPI(i, 0);
djinn77 1:abc2af4246eb 318 }
djinn77 1:abc2af4246eb 319
djinn77 1:abc2af4246eb 320 while(1){
djinn77 1:abc2af4246eb 321 captura_datos_tx(); // Inicia la lectura de la informacion
djinn77 1:abc2af4246eb 322 perder_tx();
djinn77 1:abc2af4246eb 323 }
djinn77 1:abc2af4246eb 324
djinn77 1:abc2af4246eb 325 }
djinn77 1:abc2af4246eb 326
djinn77 1:abc2af4246eb 327 void captura_datos_tx(){
djinn77 1:abc2af4246eb 328
djinn77 1:abc2af4246eb 329
djinn77 1:abc2af4246eb 330 //-----------------------------------------
djinn77 1:abc2af4246eb 331 char inicio=0,final=0;
djinn77 1:abc2af4246eb 332 figura=0;
djinn77 1:abc2af4246eb 333 giro=0;
djinn77 1:abc2af4246eb 334 posicion=0;
djinn77 1:abc2af4246eb 335
djinn77 1:abc2af4246eb 336 debuging("\n Ingrese el inicio del comando. ");
djinn77 1:abc2af4246eb 337 inicio=pc.getc();
djinn77 1:abc2af4246eb 338 debuging("\n Ingrese la Figura. ");
djinn77 1:abc2af4246eb 339 figura=pc.getc();
djinn77 1:abc2af4246eb 340 debuging("\n Seleccione el giro. ");
djinn77 1:abc2af4246eb 341 giro=pc.getc();
djinn77 1:abc2af4246eb 342 debuging("\n Seleccione la posicion. ");
djinn77 1:abc2af4246eb 343 posicion=pc.getc();
djinn77 1:abc2af4246eb 344 debuging("\n Ingrese el final del comando. ");
djinn77 1:abc2af4246eb 345 final=pc.getc();
djinn77 1:abc2af4246eb 346
djinn77 1:abc2af4246eb 347
djinn77 1:abc2af4246eb 348 if(inicio!= '<' || final != '>'){
djinn77 1:abc2af4246eb 349
djinn77 1:abc2af4246eb 350 debuging("\n Error en el comando.");
djinn77 1:abc2af4246eb 351
djinn77 1:abc2af4246eb 352 }else{
djinn77 1:abc2af4246eb 353
djinn77 1:abc2af4246eb 354 read_tx();
djinn77 1:abc2af4246eb 355
djinn77 1:abc2af4246eb 356 }
djinn77 1:abc2af4246eb 357 //------------------------------------------------------
djinn77 1:abc2af4246eb 358
djinn77 1:abc2af4246eb 359 /*//--------------------figuras con random------------------
djinn77 1:abc2af4246eb 360 figura=0;
djinn77 1:abc2af4246eb 361 giro=0;
djinn77 1:abc2af4246eb 362 figura=rand()%5;
djinn77 1:abc2af4246eb 363 giro=rand()%5;
djinn77 1:abc2af4246eb 364 posicion=rand()%6;;
djinn77 1:abc2af4246eb 365 read_tx();
djinn77 1:abc2af4246eb 366 *///--------------------------------------------------------
djinn77 1:abc2af4246eb 367
djinn77 1:abc2af4246eb 368
djinn77 1:abc2af4246eb 369
djinn77 1:abc2af4246eb 370
djinn77 1:abc2af4246eb 371 }
djinn77 1:abc2af4246eb 372
djinn77 1:abc2af4246eb 373 void inicializar(){ //INICIALIZA LA MATRIZ
djinn77 1:abc2af4246eb 374
djinn77 1:abc2af4246eb 375 sendSPI(0x0c,1);
djinn77 1:abc2af4246eb 376 sendSPI(0x0b,7);
djinn77 1:abc2af4246eb 377 sendSPI(0x09,0);
djinn77 1:abc2af4246eb 378 sendSPI(0x0A,0x00); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ
djinn77 1:abc2af4246eb 379 int i;
djinn77 1:abc2af4246eb 380 for (i=0;i<2;i++){
djinn77 1:abc2af4246eb 381 sendSPI(0x0F,1);
djinn77 1:abc2af4246eb 382 wait (0.5);
djinn77 1:abc2af4246eb 383 sendSPI(0x0f,0);
djinn77 1:abc2af4246eb 384 wait (0.5);
djinn77 1:abc2af4246eb 385 }
djinn77 1:abc2af4246eb 386
djinn77 1:abc2af4246eb 387 for (int j= 1; j<=8;j++){ // limpia la pantalla al encenderce o reiniarcea asi
djinn77 1:abc2af4246eb 388 //no quedan leds encendidos cuando se ejecute el programa nuevamente
djinn77 1:abc2af4246eb 389
djinn77 1:abc2af4246eb 390 sendSPI(j, 0x00); //pone cada columna y vecto en blanco al inicializar
djinn77 1:abc2af4246eb 391 }
djinn77 1:abc2af4246eb 392 }
djinn77 1:abc2af4246eb 393
djinn77 1:abc2af4246eb 394 void read_tx(){
djinn77 1:abc2af4246eb 395
djinn77 1:abc2af4246eb 396 switch(figura){ //Este switch escoje la figura con que trabajaar
djinn77 1:abc2af4246eb 397 case 0: // L
djinn77 1:abc2af4246eb 398 if(giro == 0)
djinn77 1:abc2af4246eb 399 imprimir = PZA_L,liminf=7, limizq=6, limder=0;
djinn77 1:abc2af4246eb 400 if(giro == 1)
djinn77 1:abc2af4246eb 401 imprimir = PZA_LDN,liminf=7, limizq=5, limder=0;
djinn77 1:abc2af4246eb 402 if(giro == 2)
djinn77 1:abc2af4246eb 403 imprimir = PZA_LDO,liminf=7, limizq=5, limder=-1;
djinn77 1:abc2af4246eb 404 if(giro == 3)
djinn77 1:abc2af4246eb 405 imprimir = PZA_LDD,liminf=8, limizq=5, limder=0;
djinn77 1:abc2af4246eb 406 break;
djinn77 1:abc2af4246eb 407 case 1://T
djinn77 1:abc2af4246eb 408 if(giro == 0)
djinn77 1:abc2af4246eb 409 imprimir = PZA_T,liminf=8, limizq=5, limder=0;
djinn77 1:abc2af4246eb 410 if(giro == 1)
djinn77 1:abc2af4246eb 411 imprimir = PZA_TN,liminf=7, limizq=6, limder=0;
djinn77 1:abc2af4246eb 412 if(giro == 2)
djinn77 1:abc2af4246eb 413 imprimir = PZA_TO,liminf=7, limizq=5, limder=0;
djinn77 1:abc2af4246eb 414 if(giro == 3)
djinn77 1:abc2af4246eb 415 imprimir = PZA_TD,liminf=7, limizq=5, limder=-1;
djinn77 1:abc2af4246eb 416 break;
djinn77 1:abc2af4246eb 417 case 2://I
djinn77 1:abc2af4246eb 418 if(giro == 0 || giro == 2)
djinn77 1:abc2af4246eb 419 imprimir = PZA_I,liminf=7, limizq=6, limder=-1;
djinn77 1:abc2af4246eb 420 if(giro == 1 || giro == 3)
djinn77 1:abc2af4246eb 421 imprimir = PZA_IR,liminf=8, limizq=5, limder=0;
djinn77 1:abc2af4246eb 422 break;
djinn77 1:abc2af4246eb 423 case 3://Cuadrado
djinn77 1:abc2af4246eb 424 if(giro == 0 || giro == 1 || giro == 2 || giro == 3)
djinn77 1:abc2af4246eb 425 imprimir = PZA_C,liminf=8, limizq=6, limder=0;
djinn77 1:abc2af4246eb 426 break;
djinn77 1:abc2af4246eb 427 case 4:
djinn77 1:abc2af4246eb 428 if(giro == 0 || giro == 2)
djinn77 1:abc2af4246eb 429 imprimir = PZA_Z,liminf=8, limizq=5, limder=0;
djinn77 1:abc2af4246eb 430 if(giro == 1 || giro == 3)
djinn77 1:abc2af4246eb 431 imprimir = PZA_ZN,liminf=7, limizq=6, limder=0;
djinn77 1:abc2af4246eb 432 break;
djinn77 1:abc2af4246eb 433 default:
djinn77 1:abc2af4246eb 434 imprimir = VACIO;
djinn77 1:abc2af4246eb 435 break;
djinn77 1:abc2af4246eb 436 }
djinn77 1:abc2af4246eb 437 // pc.printf("\n limite inferior read %d\n ",liminf);
djinn77 1:abc2af4246eb 438 desplazar_tx();
djinn77 1:abc2af4246eb 439 }
djinn77 1:abc2af4246eb 440 void desplazar_tx(){
djinn77 1:abc2af4246eb 441
djinn77 1:abc2af4246eb 442 uint16_t desplazamiento[8]={0}; // Inicia un vector auxiliar con solo Ceros
djinn77 1:abc2af4246eb 443 int j= 0;
djinn77 1:abc2af4246eb 444 for(int i=posicion; i<(posicion+3);i++){ // Inicia un vector auxiliar con solo Ceros
djinn77 1:abc2af4246eb 445 desplazamiento[i]=imprimir[j]; // Alamcena los nuevos datos tomados en el vector
djinn77 1:abc2af4246eb 446 j++;
djinn77 1:abc2af4246eb 447 }
djinn77 1:abc2af4246eb 448 imprimir=desplazamiento;
djinn77 1:abc2af4246eb 449 captura_matriz_tx();
djinn77 1:abc2af4246eb 450 }
djinn77 1:abc2af4246eb 451
djinn77 1:abc2af4246eb 452 void captura_matriz_tx(){
djinn77 1:abc2af4246eb 453
djinn77 1:abc2af4246eb 454 int i=0; // inicia el contador i en 0
djinn77 1:abc2af4246eb 455 int enable=1;
djinn77 1:abc2af4246eb 456 enableizq=1;
djinn77 1:abc2af4246eb 457 enableder=1;
djinn77 1:abc2af4246eb 458 bajando=1;
djinn77 1:abc2af4246eb 459 velocidad=1.0;
djinn77 1:abc2af4246eb 460 while(enable){ //se encarga de desplazar los bits dentro del vector
djinn77 1:abc2af4246eb 461 //pc.printf("\n1- conteo del corriemiento:\n %d",i);
djinn77 1:abc2af4246eb 462 corrimiento=i;
djinn77 1:abc2af4246eb 463 int j=1; // inicia el contador j en 1
djinn77 1:abc2af4246eb 464
djinn77 1:abc2af4246eb 465 while(j<=8){ //se encarga de seleccionar que posicion del vector imprimira
djinn77 1:abc2af4246eb 466
djinn77 1:abc2af4246eb 467 sendSPI(j, memoria[j-1]|(imprimir[j-1]>>i)); //Imprime el resultado de aplicar OR a la memoria y al desplamamiento de imprimir
djinn77 1:abc2af4246eb 468 //wait(0.1); // Activar este wait para pruebas de desplazamiento y captura de los datos
djinn77 1:abc2af4246eb 469
djinn77 1:abc2af4246eb 470 if(i==liminf || (memoria[j-1]&(imprimir[j-1]>>i+1))!=0){ //Detiene el desplazamiento cuando los bits tocan fondo,
djinn77 1:abc2af4246eb 471 enable=0;// desabilitador del ciclo while
djinn77 1:abc2af4246eb 472 bajando=0;
djinn77 1:abc2af4246eb 473 for(int k=0; k<8;k++){ // Almacena todos lo datos del vector en la posicion que corrimiento en la memoria
djinn77 1:abc2af4246eb 474 memoria[k]= memoria[k]|(imprimir[k]>>i);
djinn77 1:abc2af4246eb 475 }
djinn77 1:abc2af4246eb 476
djinn77 1:abc2af4246eb 477
djinn77 1:abc2af4246eb 478 }
djinn77 1:abc2af4246eb 479
djinn77 3:814ec214c941 480 /*//--------------------------analisis de casillas completadas----------
djinn77 1:abc2af4246eb 481
djinn77 1:abc2af4246eb 482
djinn77 1:abc2af4246eb 483 int16_t MUL1 = memoria[0]& memoria[1]& memoria[2]& memoria[3];
djinn77 1:abc2af4246eb 484 int16_t MUL2 = memoria[4]& memoria[5]& memoria[6]& memoria[7];
djinn77 1:abc2af4246eb 485
djinn77 1:abc2af4246eb 486
djinn77 1:abc2af4246eb 487 MUL1= MUL1&MUL2;
djinn77 1:abc2af4246eb 488 if(MUL1 != 0){
djinn77 1:abc2af4246eb 489
djinn77 1:abc2af4246eb 490 //////////////////////////
djinn77 1:abc2af4246eb 491 sendSPI(1, 0);
djinn77 1:abc2af4246eb 492 sendSPI(2, 0);
djinn77 1:abc2af4246eb 493 sendSPI(3, 0);
djinn77 1:abc2af4246eb 494 sendSPI(4, MUL1);
djinn77 1:abc2af4246eb 495 sendSPI(5, 0);
djinn77 1:abc2af4246eb 496 sendSPI(6, 0);
djinn77 1:abc2af4246eb 497 sendSPI(7, 0);
djinn77 1:abc2af4246eb 498 sendSPI(8, 0);
djinn77 1:abc2af4246eb 499 wait(1.0);
djinn77 1:abc2af4246eb 500 ///////////////////////////////
djinn77 1:abc2af4246eb 501
djinn77 1:abc2af4246eb 502 int16_t resta[8]={0};
djinn77 1:abc2af4246eb 503
djinn77 1:abc2af4246eb 504 for(int ki=0; ki<=7;ki++){
djinn77 1:abc2af4246eb 505
djinn77 1:abc2af4246eb 506 resta[ki]=memoria[ki]- MUL1;
djinn77 1:abc2af4246eb 507
djinn77 1:abc2af4246eb 508 }
djinn77 1:abc2af4246eb 509
djinn77 1:abc2af4246eb 510 int n=0;
djinn77 1:abc2af4246eb 511 int cot=0b00000001;
djinn77 1:abc2af4246eb 512
djinn77 1:abc2af4246eb 513 for(int l = 0; l<=7;l++){
djinn77 1:abc2af4246eb 514 if((cot<<l & MUL1) !=0){
djinn77 1:abc2af4246eb 515 n++;
djinn77 1:abc2af4246eb 516 }
djinn77 1:abc2af4246eb 517 }
djinn77 1:abc2af4246eb 518
djinn77 1:abc2af4246eb 519 for(int p= 1;p<=8;p++){
djinn77 1:abc2af4246eb 520 sendSPI(p, resta[p-1]);
djinn77 1:abc2af4246eb 521
djinn77 1:abc2af4246eb 522 }
djinn77 1:abc2af4246eb 523 wait(2.0);
djinn77 1:abc2af4246eb 524
djinn77 1:abc2af4246eb 525
djinn77 1:abc2af4246eb 526
djinn77 1:abc2af4246eb 527 for(int ii= 0;ii<=7;ii++){
djinn77 1:abc2af4246eb 528
djinn77 1:abc2af4246eb 529 memoria[ii]=0;
djinn77 1:abc2af4246eb 530 memoria[ii]= resta[ii]>>n;
djinn77 1:abc2af4246eb 531
djinn77 1:abc2af4246eb 532 }
djinn77 1:abc2af4246eb 533
djinn77 1:abc2af4246eb 534 }
djinn77 1:abc2af4246eb 535
djinn77 1:abc2af4246eb 536
djinn77 3:814ec214c941 537 */
djinn77 1:abc2af4246eb 538 //-----------------------------------------------------------------
djinn77 1:abc2af4246eb 539
djinn77 1:abc2af4246eb 540
djinn77 1:abc2af4246eb 541 j++;
djinn77 1:abc2af4246eb 542 }
djinn77 1:abc2af4246eb 543 wait(velocidad); // espera para tomar el otro valor de lectura
djinn77 1:abc2af4246eb 544 // ----------------------Lectura del jostick-----------------------------
djinn77 1:abc2af4246eb 545
djinn77 1:abc2af4246eb 546 meas_vx = vrx.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje X
djinn77 1:abc2af4246eb 547 meas_vy = vry.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje Y
djinn77 1:abc2af4246eb 548
djinn77 1:abc2af4246eb 549 //------ realiza el corriemiento del vector hacia la izq y der respectivamente.
djinn77 1:abc2af4246eb 550
djinn77 1:abc2af4246eb 551
djinn77 1:abc2af4246eb 552 if (meas_vx > 1700 && (posicion < limizq)) // si se cumple esta condicion el jugador se desplaza a la izq
djinn77 1:abc2af4246eb 553 desplazar_izq_tx(),i--;
djinn77 1:abc2af4246eb 554 else if (meas_vx < 1600 && (posicion > limder)) // si se cumple esta condicion el jugador se desplaza a la der
djinn77 1:abc2af4246eb 555 desplazar_der_tx();
djinn77 1:abc2af4246eb 556
djinn77 1:abc2af4246eb 557
djinn77 1:abc2af4246eb 558 //-----------------------Giro de la pieza--------------------------------
djinn77 1:abc2af4246eb 559
djinn77 3:814ec214c941 560 if(meas_vy > 1680){
djinn77 1:abc2af4246eb 561 giro++;
djinn77 1:abc2af4246eb 562 if(giro ==4){
djinn77 1:abc2af4246eb 563 giro=0;
djinn77 1:abc2af4246eb 564 }
djinn77 1:abc2af4246eb 565 switch(figura){
djinn77 1:abc2af4246eb 566 case 0: // L
djinn77 1:abc2af4246eb 567 if(giro == 0)
djinn77 1:abc2af4246eb 568 imprimir= girar(PZA_L, posicion),liminf=7, limizq=6, limder=0,i--;
djinn77 1:abc2af4246eb 569 if(giro == 1)
djinn77 1:abc2af4246eb 570 imprimir= girar(PZA_LDN, posicion),liminf=7, limizq=5, limder=0,i--;
djinn77 1:abc2af4246eb 571 if(giro == 2)
djinn77 1:abc2af4246eb 572 imprimir= girar(PZA_LDO, posicion),liminf=7, limizq=5, limder=-1,i--;
djinn77 1:abc2af4246eb 573 if(giro == 3)
djinn77 1:abc2af4246eb 574 imprimir=girar(PZA_LDD, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 1:abc2af4246eb 575 break;
djinn77 1:abc2af4246eb 576 case 1://T
djinn77 1:abc2af4246eb 577 if(giro == 0)
djinn77 1:abc2af4246eb 578 imprimir= girar(PZA_T, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 1:abc2af4246eb 579 if(giro == 1)
djinn77 1:abc2af4246eb 580 imprimir= girar(PZA_TN, posicion),liminf=7, limizq=6, limder=0,i--;
djinn77 1:abc2af4246eb 581 if(giro == 2)
djinn77 1:abc2af4246eb 582 imprimir= girar(PZA_TO, posicion),liminf=7, limizq=5, limder=0,i--;
djinn77 1:abc2af4246eb 583 if(giro == 3)
djinn77 1:abc2af4246eb 584 imprimir= girar(PZA_TD, posicion),liminf=7, limizq=5, limder=-1,i--;
djinn77 1:abc2af4246eb 585 break;
djinn77 1:abc2af4246eb 586 case 2://I
djinn77 1:abc2af4246eb 587 if(giro == 0 || giro == 2)
djinn77 1:abc2af4246eb 588 imprimir= girar(PZA_I, posicion),liminf=7, limizq=6, limder=-1,i--;
djinn77 1:abc2af4246eb 589 if(giro == 1 || giro == 3)
djinn77 1:abc2af4246eb 590 imprimir=girar(PZA_IR, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 1:abc2af4246eb 591 break;
djinn77 1:abc2af4246eb 592 case 3://Cuadrado
djinn77 1:abc2af4246eb 593 if(giro == 0 || giro == 1 || giro == 2 || giro == 3)
djinn77 1:abc2af4246eb 594 imprimir= girar(PZA_C, posicion),liminf=8, limizq=6, limder=0,i--;
djinn77 1:abc2af4246eb 595 break;
djinn77 1:abc2af4246eb 596 case 4: //Z
djinn77 1:abc2af4246eb 597 if(giro == 0 || giro == 2)
djinn77 1:abc2af4246eb 598 imprimir= girar(PZA_Z, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 1:abc2af4246eb 599 if(giro == 1 || giro == 3)
djinn77 1:abc2af4246eb 600 imprimir= girar(PZA_ZN, posicion),liminf=7, limizq=6, limder=0,i--;
djinn77 1:abc2af4246eb 601 break;
djinn77 1:abc2af4246eb 602
djinn77 1:abc2af4246eb 603 }
djinn77 1:abc2af4246eb 604
djinn77 1:abc2af4246eb 605 }
djinn77 1:abc2af4246eb 606
djinn77 1:abc2af4246eb 607 //---------------------------------------------------------------
djinn77 1:abc2af4246eb 608 pulsador_abj.fall(&aum_velocidad_tx);
djinn77 1:abc2af4246eb 609
djinn77 1:abc2af4246eb 610 i++;
djinn77 1:abc2af4246eb 611 }
djinn77 1:abc2af4246eb 612
djinn77 1:abc2af4246eb 613 }
djinn77 1:abc2af4246eb 614
djinn77 1:abc2af4246eb 615 void desplazar_izq_tx(){
djinn77 1:abc2af4246eb 616
djinn77 1:abc2af4246eb 617 if(posicion<limizq & corrimiento<liminf & enableizq){
djinn77 1:abc2af4246eb 618 posicion++;
djinn77 1:abc2af4246eb 619
djinn77 1:abc2af4246eb 620 for(int i=7; i >=0; i--){
djinn77 1:abc2af4246eb 621 imprimir[i]=imprimir[i-1];
djinn77 1:abc2af4246eb 622 if(i==0){
djinn77 1:abc2af4246eb 623 imprimir[i]=0;
djinn77 1:abc2af4246eb 624
djinn77 1:abc2af4246eb 625 }
djinn77 1:abc2af4246eb 626 if((memoria[i+1] & (imprimir[i]>>corrimiento))!=0){
djinn77 1:abc2af4246eb 627 enableizq=0;
djinn77 1:abc2af4246eb 628 }
djinn77 1:abc2af4246eb 629
djinn77 1:abc2af4246eb 630 }
djinn77 1:abc2af4246eb 631 for(int j=1;j<=8;j++){
djinn77 1:abc2af4246eb 632 sendSPI(j, memoria[j-1]|(imprimir[j-1]>>corrimiento));
djinn77 1:abc2af4246eb 633
djinn77 1:abc2af4246eb 634 }
djinn77 1:abc2af4246eb 635 wait(1.0);
djinn77 1:abc2af4246eb 636
djinn77 1:abc2af4246eb 637 }
djinn77 1:abc2af4246eb 638 return;
djinn77 1:abc2af4246eb 639 }
djinn77 1:abc2af4246eb 640
djinn77 1:abc2af4246eb 641 void desplazar_der_tx(){
djinn77 1:abc2af4246eb 642 if(posicion>limder & corrimiento<liminf & enableder & bajando){
djinn77 1:abc2af4246eb 643 posicion--;
djinn77 1:abc2af4246eb 644
djinn77 1:abc2af4246eb 645 for(int i=0; i <8; i++){
djinn77 1:abc2af4246eb 646 int der =(memoria[i+1] & (imprimir[i]>>corrimiento));
djinn77 1:abc2af4246eb 647 imprimir[i]=imprimir[i+1];
djinn77 1:abc2af4246eb 648 if(i==7){
djinn77 1:abc2af4246eb 649 imprimir[i]=0;
djinn77 1:abc2af4246eb 650
djinn77 1:abc2af4246eb 651 }
djinn77 1:abc2af4246eb 652 if((memoria[i-1] & (imprimir[i]>>corrimiento))!=0){
djinn77 1:abc2af4246eb 653 enableder=0;
djinn77 1:abc2af4246eb 654 pc.printf("\n multisder en :%d\n ",der);
djinn77 1:abc2af4246eb 655 pc.printf("\n derecho:%d\n ",enableder);
djinn77 1:abc2af4246eb 656 }
djinn77 1:abc2af4246eb 657 }
djinn77 1:abc2af4246eb 658 for(int j=1;j<=8;j++){
djinn77 1:abc2af4246eb 659 sendSPI(j, memoria[j-1]|(imprimir[j-1]>>corrimiento));
djinn77 1:abc2af4246eb 660 }
djinn77 1:abc2af4246eb 661 wait(1.0);
djinn77 1:abc2af4246eb 662 }
djinn77 1:abc2af4246eb 663 return;
djinn77 1:abc2af4246eb 664
djinn77 1:abc2af4246eb 665 }
djinn77 1:abc2af4246eb 666
djinn77 1:abc2af4246eb 667 uint16_t* girar(uint16_t* pieza, int posicion){
djinn77 1:abc2af4246eb 668 uint16_t desplazamiento[8]={0};
djinn77 1:abc2af4246eb 669 int j= 0;
djinn77 1:abc2af4246eb 670 for(int i=posicion; i<(posicion+3);i++){ // Inicia un vector auxiliar con solo Ceros
djinn77 1:abc2af4246eb 671 desplazamiento[i]=pieza[j]; // Alamcena los nuevos datos tomados en el vector
djinn77 1:abc2af4246eb 672 j++;
djinn77 1:abc2af4246eb 673 }
djinn77 1:abc2af4246eb 674
djinn77 1:abc2af4246eb 675 return desplazamiento;
djinn77 1:abc2af4246eb 676 }
djinn77 1:abc2af4246eb 677
djinn77 1:abc2af4246eb 678 void perder_tx(){
djinn77 1:abc2af4246eb 679 for(int i=0; i<8;i++){ // Almacena todos lo datos del vector en la posicion que corrimiento en la memoria
djinn77 1:abc2af4246eb 680 borde= &memoria[i];
djinn77 1:abc2af4246eb 681 if(*borde>255){
djinn77 1:abc2af4246eb 682 NVIC_SystemReset();
djinn77 1:abc2af4246eb 683 }
djinn77 1:abc2af4246eb 684 }
djinn77 1:abc2af4246eb 685 }
djinn77 1:abc2af4246eb 686
djinn77 1:abc2af4246eb 687 void aum_velocidad_tx(){
djinn77 1:abc2af4246eb 688 velocidad=0.2;
djinn77 2:0c22820ab1d1 689 }
djinn77 2:0c22820ab1d1 690
djinn77 2:0c22820ab1d1 691 void himno_legria(){
djinn77 2:0c22820ab1d1 692
djinn77 2:0c22820ab1d1 693 int i;
djinn77 2:0c22820ab1d1 694 buzzer=0.2;
djinn77 2:0c22820ab1d1 695 for (i=0; i<13; i++) {
djinn77 2:0c22820ab1d1 696 buzzer.period_us(periodos1[i]);
djinn77 2:0c22820ab1d1 697 wait(0.5*duracion1[i]);
djinn77 2:0c22820ab1d1 698 }
djinn77 2:0c22820ab1d1 699 for (i=0; i<13; i++) {
djinn77 2:0c22820ab1d1 700 buzzer.period_us(periodos2[i]);
djinn77 2:0c22820ab1d1 701 wait(0.5*duracion1[i]);
djinn77 2:0c22820ab1d1 702 }
djinn77 2:0c22820ab1d1 703 for (i=0; i<16; i++) {
djinn77 2:0c22820ab1d1 704 buzzer.period_us(periodos3[i]);
djinn77 2:0c22820ab1d1 705 wait(0.5*duracion2[i]);
djinn77 2:0c22820ab1d1 706 }
djinn77 2:0c22820ab1d1 707
djinn77 2:0c22820ab1d1 708 }