TETRIS FINAL

Dependencies:   mbed

Committer:
djinn77
Date:
Fri Nov 16 05:05:06 2018 +0000
Revision:
2:cee98cfbd679
Parent:
1:f9ff8e1c3244
Child:
3:f61db70f1f7c
Mejjor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
djinn77 0:f15eccb70d1d 1 #include "mbed.h"
djinn77 0:f15eccb70d1d 2 #include "piezas.h"
djinn77 0:f15eccb70d1d 3 //#define DEBUG 1
djinn77 0:f15eccb70d1d 4
djinn77 0:f15eccb70d1d 5 //Establecimiento de la comunicacion
djinn77 0:f15eccb70d1d 6 Serial pc(USBTX,USBRX);
djinn77 0:f15eccb70d1d 7 SPI deviceM(PB_5, PB_4, PB_3); // D4(gris), Ninguno, D3(azul)
djinn77 0:f15eccb70d1d 8 //SPI deviceM(PB_15, PB_14, PB_13);
djinn77 0:f15eccb70d1d 9 DigitalOut ssel (PA_4); // A2(morado)
djinn77 0:f15eccb70d1d 10 //DigitalOut ssel (PB_12);
djinn77 0:f15eccb70d1d 11
djinn77 0:f15eccb70d1d 12 //Delcaracion de botones
djinn77 0:f15eccb70d1d 13
djinn77 0:f15eccb70d1d 14 // InterruptIn pulsador_izq(A5);
djinn77 0:f15eccb70d1d 15 // InterruptIn pulsador_der(A4);
djinn77 0:f15eccb70d1d 16 // DigitalIn p_giro(A3);
djinn77 0:f15eccb70d1d 17 // DigitalIn obligar_bajar(A0);
djinn77 0:f15eccb70d1d 18
djinn77 0:f15eccb70d1d 19 // Definiendo Botones
djinn77 0:f15eccb70d1d 20
djinn77 0:f15eccb70d1d 21 AnalogIn vry(A3); // Lee el eje x del jostick
djinn77 0:f15eccb70d1d 22 AnalogIn vrx(A4); // Lee el eje y del jostick
djinn77 1:f9ff8e1c3244 23 InterruptIn pulsador_abj(D8); // Lee el boton del jostick
djinn77 0:f15eccb70d1d 24
djinn77 0:f15eccb70d1d 25 //Declaracion de funciones
djinn77 0:f15eccb70d1d 26 void inicializar();
djinn77 0:f15eccb70d1d 27 void sendSPI(uint8_t d1, uint8_t d2);
djinn77 0:f15eccb70d1d 28 void captura_datos();
djinn77 0:f15eccb70d1d 29 void read();
djinn77 0:f15eccb70d1d 30 void desplazar();
djinn77 0:f15eccb70d1d 31 void captura_matriz();
djinn77 0:f15eccb70d1d 32 void desplazar_izq();
djinn77 0:f15eccb70d1d 33 void desplazar_der();
djinn77 1:f9ff8e1c3244 34 void aum_velocidad();
djinn77 0:f15eccb70d1d 35 void perder();
djinn77 0:f15eccb70d1d 36 uint16_t* girar(uint16_t* pieza, int posicion);
djinn77 0:f15eccb70d1d 37 // Declaracion de variables
djinn77 0:f15eccb70d1d 38 int8_t posicion= 0, figura= 0, giro= 0;
djinn77 0:f15eccb70d1d 39 uint16_t memoria[8]={0};
djinn77 0:f15eccb70d1d 40 uint16_t* imprimir;
djinn77 0:f15eccb70d1d 41 uint16_t *borde=0;
djinn77 0:f15eccb70d1d 42 int8_t corrimiento=0;
djinn77 0:f15eccb70d1d 43 float meas_vx;
djinn77 0:f15eccb70d1d 44 float meas_vy;
djinn77 1:f9ff8e1c3244 45 float velocidad=1.0;
djinn77 0:f15eccb70d1d 46 // Delcaraion de limites
djinn77 0:f15eccb70d1d 47 int8_t liminf=0, limizq=0, limder=0;
djinn77 0:f15eccb70d1d 48 // Habilitadores
djinn77 0:f15eccb70d1d 49 int enableizq=1;
djinn77 0:f15eccb70d1d 50 int enableder=1;
djinn77 0:f15eccb70d1d 51 int bajando=1;
djinn77 0:f15eccb70d1d 52
djinn77 0:f15eccb70d1d 53 void debuging(char*s,...){
djinn77 0:f15eccb70d1d 54
djinn77 0:f15eccb70d1d 55 #if DEBUG
djinn77 0:f15eccb70d1d 56 pc.printf(s);
djinn77 0:f15eccb70d1d 57 #endif
djinn77 0:f15eccb70d1d 58
djinn77 0:f15eccb70d1d 59 }
djinn77 0:f15eccb70d1d 60
djinn77 0:f15eccb70d1d 61 // FUNCION EL CUAL ENVIA EL DATO JUNTO CON LA DIRECCION DE LA COLUMNA CORRESPONDIENTE AL PRIMER DISPOSITIVO
djinn77 0:f15eccb70d1d 62 void sendSPI(uint8_t d1, uint8_t d2)
djinn77 0:f15eccb70d1d 63 {
djinn77 0:f15eccb70d1d 64 deviceM.unlock();
djinn77 0:f15eccb70d1d 65 ssel=0; // SELECCIONA EL PRIMER DISPOSOTIVO
djinn77 0:f15eccb70d1d 66 deviceM.write(d1); // ESCRIBE EL ADDRESS
djinn77 0:f15eccb70d1d 67 deviceM.write(d2); // ESCRIBE EL DATA
djinn77 0:f15eccb70d1d 68 ssel=1;
djinn77 0:f15eccb70d1d 69 deviceM.lock();
djinn77 0:f15eccb70d1d 70 };
djinn77 0:f15eccb70d1d 71
djinn77 0:f15eccb70d1d 72
djinn77 0:f15eccb70d1d 73 int main() {
djinn77 0:f15eccb70d1d 74 inicializar(); // Inicializa el programa para establecer los modos de trabajo liminosidad
djinn77 0:f15eccb70d1d 75 while(1){
djinn77 0:f15eccb70d1d 76 captura_datos(); // Inicia la lectura de la informacion
djinn77 0:f15eccb70d1d 77 perder();
djinn77 0:f15eccb70d1d 78 }
djinn77 0:f15eccb70d1d 79 }
djinn77 0:f15eccb70d1d 80
djinn77 0:f15eccb70d1d 81 void captura_datos(){
djinn77 0:f15eccb70d1d 82
djinn77 0:f15eccb70d1d 83 pc.baud(38400); //Inicializa la velocidad de comunicacion
djinn77 0:f15eccb70d1d 84 /*//-----------------------------------------
djinn77 0:f15eccb70d1d 85 char inicio=0,final=0;
djinn77 0:f15eccb70d1d 86 figura=0;
djinn77 0:f15eccb70d1d 87 giro=0;
djinn77 0:f15eccb70d1d 88 posicion=0;
djinn77 0:f15eccb70d1d 89
djinn77 0:f15eccb70d1d 90 debuging("\n Ingrese el inicio del comando. ");
djinn77 0:f15eccb70d1d 91 inicio=pc.getc();
djinn77 0:f15eccb70d1d 92 debuging("\n Ingrese la Figura. ");
djinn77 0:f15eccb70d1d 93 figura=pc.getc();
djinn77 0:f15eccb70d1d 94 debuging("\n Seleccione el giro. ");
djinn77 0:f15eccb70d1d 95 giro=pc.getc();
djinn77 0:f15eccb70d1d 96 debuging("\n Seleccione la posicion. ");
djinn77 0:f15eccb70d1d 97 posicion=pc.getc();
djinn77 0:f15eccb70d1d 98 debuging("\n Ingrese el final del comando. ");
djinn77 0:f15eccb70d1d 99 final=pc.getc();
djinn77 0:f15eccb70d1d 100
djinn77 0:f15eccb70d1d 101
djinn77 0:f15eccb70d1d 102 if(inicio!= '<' || final != '>'){
djinn77 0:f15eccb70d1d 103
djinn77 0:f15eccb70d1d 104 debuging("\n Error en el comando.");
djinn77 0:f15eccb70d1d 105
djinn77 0:f15eccb70d1d 106 }else{
djinn77 0:f15eccb70d1d 107
djinn77 0:f15eccb70d1d 108 read();
djinn77 0:f15eccb70d1d 109
djinn77 0:f15eccb70d1d 110 }
djinn77 1:f9ff8e1c3244 111 *///------------------------------------------------------
djinn77 0:f15eccb70d1d 112
djinn77 1:f9ff8e1c3244 113 //--------------------figuras con random------------------
djinn77 0:f15eccb70d1d 114 figura=0;
djinn77 0:f15eccb70d1d 115 giro=0;
djinn77 0:f15eccb70d1d 116 figura=rand()%5;
djinn77 0:f15eccb70d1d 117 giro=rand()%5;
djinn77 0:f15eccb70d1d 118 posicion=rand()%6;;
djinn77 0:f15eccb70d1d 119 read();
djinn77 1:f9ff8e1c3244 120 //--------------------------------------------------------
djinn77 0:f15eccb70d1d 121
djinn77 0:f15eccb70d1d 122
djinn77 0:f15eccb70d1d 123
djinn77 0:f15eccb70d1d 124
djinn77 0:f15eccb70d1d 125 }
djinn77 0:f15eccb70d1d 126
djinn77 0:f15eccb70d1d 127 void inicializar(){ //INICIALIZA LA MATRIZ
djinn77 0:f15eccb70d1d 128
djinn77 0:f15eccb70d1d 129 sendSPI(0x0c,1);
djinn77 0:f15eccb70d1d 130 sendSPI(0x0b,7);
djinn77 0:f15eccb70d1d 131 sendSPI(0x09,0);
djinn77 0:f15eccb70d1d 132 sendSPI(0x0A,0x00); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ
djinn77 0:f15eccb70d1d 133 int i;
djinn77 0:f15eccb70d1d 134 for (i=0;i<2;i++){
djinn77 0:f15eccb70d1d 135 sendSPI(0x0F,1);
djinn77 0:f15eccb70d1d 136 wait (0.5);
djinn77 0:f15eccb70d1d 137 sendSPI(0x0f,0);
djinn77 0:f15eccb70d1d 138 wait (0.5);
djinn77 0:f15eccb70d1d 139 }
djinn77 0:f15eccb70d1d 140
djinn77 0:f15eccb70d1d 141 for (int j= 1; j<=8;j++){ // limpia la pantalla al encenderce o reiniarcea asi
djinn77 0:f15eccb70d1d 142 //no quedan leds encendidos cuando se ejecute el programa nuevamente
djinn77 0:f15eccb70d1d 143
djinn77 0:f15eccb70d1d 144 sendSPI(j, 0x00); //pone cada columna y vecto en blanco al inicializar
djinn77 0:f15eccb70d1d 145 }
djinn77 0:f15eccb70d1d 146 }
djinn77 0:f15eccb70d1d 147
djinn77 0:f15eccb70d1d 148 void read(){
djinn77 0:f15eccb70d1d 149
djinn77 0:f15eccb70d1d 150 switch(figura){ //Este switch escoje la figura con que trabajaar
djinn77 0:f15eccb70d1d 151 case 0: // L
djinn77 0:f15eccb70d1d 152 if(giro == 0)
djinn77 0:f15eccb70d1d 153 imprimir = PZA_L,liminf=7, limizq=6, limder=0;
djinn77 0:f15eccb70d1d 154 if(giro == 1)
djinn77 0:f15eccb70d1d 155 imprimir = PZA_LDN,liminf=7, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 156 if(giro == 2)
djinn77 0:f15eccb70d1d 157 imprimir = PZA_LDO,liminf=7, limizq=5, limder=-1;
djinn77 0:f15eccb70d1d 158 if(giro == 3)
djinn77 0:f15eccb70d1d 159 imprimir = PZA_LDD,liminf=8, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 160 break;
djinn77 0:f15eccb70d1d 161 case 1://T
djinn77 0:f15eccb70d1d 162 if(giro == 0)
djinn77 0:f15eccb70d1d 163 imprimir = PZA_T,liminf=8, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 164 if(giro == 1)
djinn77 0:f15eccb70d1d 165 imprimir = PZA_TN,liminf=7, limizq=6, limder=0;
djinn77 0:f15eccb70d1d 166 if(giro == 2)
djinn77 0:f15eccb70d1d 167 imprimir = PZA_TO,liminf=7, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 168 if(giro == 3)
djinn77 0:f15eccb70d1d 169 imprimir = PZA_TD,liminf=7, limizq=5, limder=-1;
djinn77 0:f15eccb70d1d 170 break;
djinn77 0:f15eccb70d1d 171 case 2://I
djinn77 0:f15eccb70d1d 172 if(giro == 0 || giro == 2)
djinn77 0:f15eccb70d1d 173 imprimir = PZA_I,liminf=7, limizq=6, limder=-1;
djinn77 0:f15eccb70d1d 174 if(giro == 1 || giro == 3)
djinn77 0:f15eccb70d1d 175 imprimir = PZA_IR,liminf=8, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 176 break;
djinn77 0:f15eccb70d1d 177 case 3://Cuadrado
djinn77 0:f15eccb70d1d 178 if(giro == 0 || giro == 1 || giro == 2 || giro == 3)
djinn77 0:f15eccb70d1d 179 imprimir = PZA_C,liminf=8, limizq=6, limder=0;
djinn77 0:f15eccb70d1d 180 break;
djinn77 0:f15eccb70d1d 181 case 4:
djinn77 0:f15eccb70d1d 182 if(giro == 0 || giro == 2)
djinn77 0:f15eccb70d1d 183 imprimir = PZA_Z,liminf=8, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 184 if(giro == 1 || giro == 3)
djinn77 0:f15eccb70d1d 185 imprimir = PZA_ZN,liminf=7, limizq=6, limder=0;
djinn77 0:f15eccb70d1d 186 break;
djinn77 0:f15eccb70d1d 187 default:
djinn77 0:f15eccb70d1d 188 imprimir = VACIO;
djinn77 0:f15eccb70d1d 189 break;
djinn77 0:f15eccb70d1d 190 }
djinn77 0:f15eccb70d1d 191 // pc.printf("\n limite inferior read %d\n ",liminf);
djinn77 0:f15eccb70d1d 192 desplazar();
djinn77 0:f15eccb70d1d 193 }
djinn77 0:f15eccb70d1d 194 void desplazar(){
djinn77 0:f15eccb70d1d 195
djinn77 0:f15eccb70d1d 196 uint16_t desplazamiento[8]={0}; // Inicia un vector auxiliar con solo Ceros
djinn77 0:f15eccb70d1d 197 int j= 0;
djinn77 0:f15eccb70d1d 198 for(int i=posicion; i<(posicion+3);i++){ // Inicia un vector auxiliar con solo Ceros
djinn77 0:f15eccb70d1d 199 desplazamiento[i]=imprimir[j]; // Alamcena los nuevos datos tomados en el vector
djinn77 0:f15eccb70d1d 200 j++;
djinn77 0:f15eccb70d1d 201 }
djinn77 0:f15eccb70d1d 202 imprimir=desplazamiento;
djinn77 0:f15eccb70d1d 203 captura_matriz();
djinn77 0:f15eccb70d1d 204 }
djinn77 0:f15eccb70d1d 205
djinn77 0:f15eccb70d1d 206 void captura_matriz(){
djinn77 0:f15eccb70d1d 207
djinn77 0:f15eccb70d1d 208 int i=0; // inicia el contador i en 0
djinn77 0:f15eccb70d1d 209 int enable=1;
djinn77 0:f15eccb70d1d 210 enableizq=1;
djinn77 0:f15eccb70d1d 211 enableder=1;
djinn77 0:f15eccb70d1d 212 bajando=1;
djinn77 1:f9ff8e1c3244 213 velocidad=1.0;
djinn77 0:f15eccb70d1d 214 while(enable){ //se encarga de desplazar los bits dentro del vector
djinn77 0:f15eccb70d1d 215 //pc.printf("\n1- conteo del corriemiento:\n %d",i);
djinn77 0:f15eccb70d1d 216 corrimiento=i;
djinn77 1:f9ff8e1c3244 217 int j=1; // inicia el contador j en 1
djinn77 1:f9ff8e1c3244 218
djinn77 0:f15eccb70d1d 219 while(j<=8){ //se encarga de seleccionar que posicion del vector imprimira
djinn77 0:f15eccb70d1d 220
djinn77 0:f15eccb70d1d 221 sendSPI(j, memoria[j-1]|(imprimir[j-1]>>i)); //Imprime el resultado de aplicar OR a la memoria y al desplamamiento de imprimir
djinn77 0:f15eccb70d1d 222 //wait(0.1); // Activar este wait para pruebas de desplazamiento y captura de los datos
djinn77 0:f15eccb70d1d 223
djinn77 0:f15eccb70d1d 224 if(i==liminf || (memoria[j-1]&(imprimir[j-1]>>i+1))!=0){ //Detiene el desplazamiento cuando los bits tocan fondo,
djinn77 0:f15eccb70d1d 225 enable=0;// desabilitador del ciclo while
djinn77 0:f15eccb70d1d 226 bajando=0;
djinn77 0:f15eccb70d1d 227 for(int k=0; k<8;k++){ // Almacena todos lo datos del vector en la posicion que corrimiento en la memoria
djinn77 0:f15eccb70d1d 228 memoria[k]= memoria[k]|(imprimir[k]>>i);
djinn77 0:f15eccb70d1d 229 }
djinn77 0:f15eccb70d1d 230
djinn77 0:f15eccb70d1d 231 }
djinn77 0:f15eccb70d1d 232 j++;
djinn77 0:f15eccb70d1d 233 }
djinn77 0:f15eccb70d1d 234 wait(velocidad); // espera para tomar el otro valor de lectura
djinn77 0:f15eccb70d1d 235 // ----------------------Lectura del jostick-----------------------------
djinn77 0:f15eccb70d1d 236
djinn77 0:f15eccb70d1d 237 meas_vx = vrx.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje X
djinn77 0:f15eccb70d1d 238 meas_vy = vry.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje Y
djinn77 0:f15eccb70d1d 239
djinn77 0:f15eccb70d1d 240 //------ realiza el corriemiento del vector hacia la izq y der respectivamente.
djinn77 1:f9ff8e1c3244 241
djinn77 1:f9ff8e1c3244 242
djinn77 0:f15eccb70d1d 243 if (meas_vx > 1700 && (posicion < limizq)) // si se cumple esta condicion el jugador se desplaza a la izq
djinn77 2:cee98cfbd679 244 desplazar_izq(),i--;
djinn77 2:cee98cfbd679 245 else if (meas_vx < 1600 && (posicion > limder)) // si se cumple esta condicion el jugador se desplaza a la der
djinn77 0:f15eccb70d1d 246 desplazar_der();
djinn77 0:f15eccb70d1d 247
djinn77 0:f15eccb70d1d 248
djinn77 0:f15eccb70d1d 249 //-----------------------Giro de la pieza--------------------------------
djinn77 0:f15eccb70d1d 250
djinn77 2:cee98cfbd679 251 if(meas_vy > 1700 || meas_vy < 1600){
djinn77 0:f15eccb70d1d 252 giro++;
djinn77 0:f15eccb70d1d 253 if(giro ==4){
djinn77 0:f15eccb70d1d 254 giro=0;
djinn77 0:f15eccb70d1d 255 }
djinn77 0:f15eccb70d1d 256 switch(figura){
djinn77 0:f15eccb70d1d 257 case 0: // L
djinn77 0:f15eccb70d1d 258 if(giro == 0)
djinn77 0:f15eccb70d1d 259 imprimir= girar(PZA_L, posicion),liminf=7, limizq=6, limder=0,i--;
djinn77 0:f15eccb70d1d 260 if(giro == 1)
djinn77 0:f15eccb70d1d 261 imprimir= girar(PZA_LDN, posicion),liminf=7, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 262 if(giro == 2)
djinn77 0:f15eccb70d1d 263 imprimir= girar(PZA_LDO, posicion),liminf=7, limizq=5, limder=-1,i--;
djinn77 0:f15eccb70d1d 264 if(giro == 3)
djinn77 0:f15eccb70d1d 265 imprimir=girar(PZA_LDD, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 266 break;
djinn77 0:f15eccb70d1d 267 case 1://T
djinn77 0:f15eccb70d1d 268 if(giro == 0)
djinn77 0:f15eccb70d1d 269 imprimir= girar(PZA_T, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 270 if(giro == 1)
djinn77 0:f15eccb70d1d 271 imprimir= girar(PZA_TN, posicion),liminf=7, limizq=6, limder=0,i--;
djinn77 0:f15eccb70d1d 272 if(giro == 2)
djinn77 0:f15eccb70d1d 273 imprimir= girar(PZA_TO, posicion),liminf=7, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 274 if(giro == 3)
djinn77 0:f15eccb70d1d 275 imprimir= girar(PZA_TD, posicion),liminf=7, limizq=5, limder=-1,i--;
djinn77 0:f15eccb70d1d 276 break;
djinn77 0:f15eccb70d1d 277 case 2://I
djinn77 0:f15eccb70d1d 278 if(giro == 0 || giro == 2)
djinn77 0:f15eccb70d1d 279 imprimir= girar(PZA_I, posicion),liminf=7, limizq=6, limder=-1,i--;
djinn77 0:f15eccb70d1d 280 if(giro == 1 || giro == 3)
djinn77 0:f15eccb70d1d 281 imprimir=girar(PZA_IR, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 282 break;
djinn77 0:f15eccb70d1d 283 case 3://Cuadrado
djinn77 0:f15eccb70d1d 284 if(giro == 0 || giro == 1 || giro == 2 || giro == 3)
djinn77 0:f15eccb70d1d 285 imprimir= girar(PZA_C, posicion),liminf=8, limizq=6, limder=0,i--;
djinn77 0:f15eccb70d1d 286 break;
djinn77 0:f15eccb70d1d 287 case 4: //Z
djinn77 0:f15eccb70d1d 288 if(giro == 0 || giro == 2)
djinn77 0:f15eccb70d1d 289 imprimir= girar(PZA_Z, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 290 if(giro == 1 || giro == 3)
djinn77 0:f15eccb70d1d 291 imprimir= girar(PZA_ZN, posicion),liminf=7, limizq=6, limder=0,i--;
djinn77 0:f15eccb70d1d 292 break;
djinn77 0:f15eccb70d1d 293
djinn77 0:f15eccb70d1d 294 }
djinn77 0:f15eccb70d1d 295
djinn77 0:f15eccb70d1d 296 }
djinn77 0:f15eccb70d1d 297
djinn77 0:f15eccb70d1d 298 //---------------------------------------------------------------
djinn77 1:f9ff8e1c3244 299 pulsador_abj.fall(&aum_velocidad);
djinn77 1:f9ff8e1c3244 300
djinn77 0:f15eccb70d1d 301 i++;
djinn77 0:f15eccb70d1d 302 }
djinn77 0:f15eccb70d1d 303
djinn77 0:f15eccb70d1d 304 }
djinn77 0:f15eccb70d1d 305
djinn77 0:f15eccb70d1d 306 void desplazar_izq(){
djinn77 1:f9ff8e1c3244 307
djinn77 1:f9ff8e1c3244 308 if(posicion<limizq & corrimiento<liminf & enableizq){
djinn77 1:f9ff8e1c3244 309 posicion++;
djinn77 1:f9ff8e1c3244 310
djinn77 1:f9ff8e1c3244 311 for(int i=7; i >=0; i--){
djinn77 1:f9ff8e1c3244 312 int izq = (memoria[i+1] & (imprimir[i]>>corrimiento));
djinn77 1:f9ff8e1c3244 313 imprimir[i]=imprimir[i-1];
djinn77 1:f9ff8e1c3244 314 if(i==0){
djinn77 1:f9ff8e1c3244 315 imprimir[i]=0;
djinn77 1:f9ff8e1c3244 316
djinn77 1:f9ff8e1c3244 317 }
djinn77 1:f9ff8e1c3244 318 if((memoria[i+1] & (imprimir[i]>>corrimiento))!=0){
djinn77 1:f9ff8e1c3244 319 enableizq=0;
djinn77 1:f9ff8e1c3244 320 pc.printf("\n multiizq en:%d\n ",izq);
djinn77 1:f9ff8e1c3244 321 pc.printf("\n izquierdo: %d\n",enableizq);
djinn77 1:f9ff8e1c3244 322 }
djinn77 1:f9ff8e1c3244 323
djinn77 1:f9ff8e1c3244 324 }
djinn77 1:f9ff8e1c3244 325 for(int j=1;j<=8;j++){
djinn77 1:f9ff8e1c3244 326 sendSPI(j, memoria[j-1]|(imprimir[j-1]>>corrimiento));
djinn77 1:f9ff8e1c3244 327
djinn77 1:f9ff8e1c3244 328 }
djinn77 1:f9ff8e1c3244 329 wait(1.0);
djinn77 1:f9ff8e1c3244 330
djinn77 1:f9ff8e1c3244 331 }
djinn77 0:f15eccb70d1d 332 return;
djinn77 0:f15eccb70d1d 333 }
djinn77 0:f15eccb70d1d 334
djinn77 0:f15eccb70d1d 335 void desplazar_der(){
djinn77 1:f9ff8e1c3244 336 if(posicion>limder & corrimiento<liminf & enableder & bajando){
djinn77 1:f9ff8e1c3244 337 posicion--;
djinn77 1:f9ff8e1c3244 338
djinn77 1:f9ff8e1c3244 339 for(int i=0; i <8; i++){
djinn77 1:f9ff8e1c3244 340 int der =(memoria[i+1] & (imprimir[i]>>corrimiento));
djinn77 1:f9ff8e1c3244 341 imprimir[i]=imprimir[i+1];
djinn77 1:f9ff8e1c3244 342 if(i==7){
djinn77 1:f9ff8e1c3244 343 imprimir[i]=0;
djinn77 1:f9ff8e1c3244 344
djinn77 1:f9ff8e1c3244 345 }
djinn77 1:f9ff8e1c3244 346 if((memoria[i-1] & (imprimir[i]>>corrimiento))!=0){
djinn77 1:f9ff8e1c3244 347 enableder=0;
djinn77 1:f9ff8e1c3244 348 pc.printf("\n multisder en :%d\n ",der);
djinn77 1:f9ff8e1c3244 349 pc.printf("\n derecho:%d\n ",enableder);
djinn77 1:f9ff8e1c3244 350 }
djinn77 1:f9ff8e1c3244 351 }
djinn77 1:f9ff8e1c3244 352 for(int j=1;j<=8;j++){
djinn77 1:f9ff8e1c3244 353 sendSPI(j, memoria[j-1]|(imprimir[j-1]>>corrimiento));
djinn77 1:f9ff8e1c3244 354 }
djinn77 1:f9ff8e1c3244 355 wait(1.0);
djinn77 1:f9ff8e1c3244 356 }
djinn77 0:f15eccb70d1d 357 return;
djinn77 1:f9ff8e1c3244 358
djinn77 0:f15eccb70d1d 359 }
djinn77 0:f15eccb70d1d 360
djinn77 0:f15eccb70d1d 361 uint16_t* girar(uint16_t* pieza, int posicion){
djinn77 0:f15eccb70d1d 362 uint16_t desplazamiento[8]={0};
djinn77 0:f15eccb70d1d 363 int j= 0;
djinn77 0:f15eccb70d1d 364 for(int i=posicion; i<(posicion+3);i++){ // Inicia un vector auxiliar con solo Ceros
djinn77 0:f15eccb70d1d 365 desplazamiento[i]=pieza[j]; // Alamcena los nuevos datos tomados en el vector
djinn77 0:f15eccb70d1d 366 j++;
djinn77 0:f15eccb70d1d 367 }
djinn77 0:f15eccb70d1d 368
djinn77 0:f15eccb70d1d 369 return desplazamiento;
djinn77 0:f15eccb70d1d 370 }
djinn77 0:f15eccb70d1d 371
djinn77 0:f15eccb70d1d 372 void perder(){
djinn77 0:f15eccb70d1d 373 for(int i=0; i<8;i++){ // Almacena todos lo datos del vector en la posicion que corrimiento en la memoria
djinn77 0:f15eccb70d1d 374 borde= &memoria[i];
djinn77 0:f15eccb70d1d 375 if(*borde>255){
djinn77 0:f15eccb70d1d 376 NVIC_SystemReset();
djinn77 0:f15eccb70d1d 377 }
djinn77 0:f15eccb70d1d 378 }
djinn77 1:f9ff8e1c3244 379 }
djinn77 1:f9ff8e1c3244 380
djinn77 1:f9ff8e1c3244 381 void aum_velocidad(){
djinn77 1:f9ff8e1c3244 382 velocidad=0.2;
djinn77 1:f9ff8e1c3244 383 }