corrección spi.

Dependencies:   mbed MPU6050

Revision:
3:7ae3dd76ba0a
Parent:
2:fc251f89bd1b
Child:
4:78194ed9ff6b
--- a/metrix.cpp	Thu Oct 04 00:48:41 2018 +0000
+++ b/metrix.cpp	Thu Oct 11 03:33:57 2018 +0000
@@ -12,7 +12,8 @@
 uint8_t mat_act[11]={0,0,0,0,0,0,0,0,0,0,0};    //Matriz para mostrar en pantalla.
 uint8_t mat_tmp[8]={0,0,0,0,0,0,0,0};    //Matriz temporal para arrojar las fichas.
 uint8_t mat_tmp1[8]={0,0,0,0,0,0,0,0};
-uint8_t fila=1,cont=0,ncolumna=1,grados=1,ficha=0;
+uint8_t cont=0,ncolumna=1,grados=1,ficha=0;
+int fila=0;
  
 void sendSPI(uint8_t d1, uint8_t d2)
 {
@@ -35,12 +36,12 @@
 
 void cop_mat(uint8_t a,uint8_t b,uint8_t c,uint8_t* fig,uint8_t columna)
 {       
-        if(((mat_act[cont-2]& *(fig+c)>>columna-1)==0)&&((mat_act[cont-1]& *(fig+b)>>columna-1)==0)&&((mat_act[cont]& *(fig+a)>>columna-1)==0)){
+        if(((mat_act[cont-2]& (*(fig+c)>>columna-1))==0)&&((mat_act[cont-1]& (*(fig+b)>>columna-1))==0)&&((mat_act[cont]& (*(fig+a)>>columna-1))==0)){
                     mat_tmp[0]= *(fig+5)>>columna-1;             
                     mat_tmp[1]= *(fig+a)>>columna-1;            //Realiza una copia de la matriz actual fila por fila.
                     mat_tmp[2]= *(fig+b)>>columna-1;
                     mat_tmp[3]= *(fig+c)>>columna-1;
-        }   
+            }
 }
 
 void borrar()            //borrar toda la matriz;
@@ -77,7 +78,7 @@
     }
     if(fila>8)
         fila=8;
-    if(fila<=1){
+    if(fila<=0){
         wait_ms(VEL);
         borrar();
         fila=8;
@@ -92,11 +93,18 @@
         mat_act[fila-1]=mat_tmp1[2];
         mat_act[fila  ]=mat_tmp1[3];
         };
-    
 void correr_fig(){
     
-    uint8_t correr=command.getc();
-    
+    char t=1;
+    uint8_t correr;    
+    while (t==1 && command.readable()==0){ 
+        wait(0.1);
+        t=0;
+        }
+    if (command.readable())    
+        correr=command.getc();
+    else
+        correr=0;
     if(correr==30)  //Arriba, voltear figura.
     correr=1;
     
@@ -106,8 +114,9 @@
     if(correr==28)  //Derecha correr la figura.
     correr=3;
     
-    if(correr==31)  //bajar, baja la figura.
-    correr=0;
+    if(correr==31)  //Bajar la figura.
+    correr=4;
+    
     
     switch (correr){
                 
@@ -117,7 +126,7 @@
                 break;                                                    //cae la figura;
                 
                 case 1:
-                if( (mat_tmp[1]==2) || (mat_tmp[1]==1)|| (mat_tmp[1]==3)) //faltan condiciones para evitar desplazamiento innecesario.
+                if((mat_tmp[1]==2) || (mat_tmp[1]==1) || (mat_tmp[1]==3)) //faltan condiciones para evitar desplazamiento innecesario.
                 ncolumna--;
                 grados++;
                 if(grados>4)
@@ -129,11 +138,11 @@
                 if(ncolumna>6){
                     if(((mat_tmp[2]==3) && (mat_tmp[3]==6)) || (mat_tmp[2]==7) || (mat_tmp[3]==7)) 
                     ncolumna=6;
-                    if((mat_tmp[1]==2) &&(mat_tmp[2]==2) && (mat_tmp[3]==2))
-                    ncolumna=7;
+                    //if((mat_tmp[1]==2) &&(mat_tmp[2]==2) && (mat_tmp[3]==2))
+                    //ncolumna=7;
                     }
-                //if(ncolumna>7)
-                //ncolumna=7;
+                if(ncolumna>7)
+                ncolumna=7;
                 break;                                                    //correr a la Derecha;
                 
                 case 3:
@@ -141,11 +150,14 @@
                 if(ncolumna<1)
                 ncolumna=1;
                 break;                                                    //correr a la izquierda;
+                
+                case 4:
+                cont++;
+                if(cont>8)cont=8;
+                break; 
                 }
-    
     }
 
-
 void imp_mat(uint8_t *temp){                                 //se genera la variable global cont.
             mat_tmp1[0]=(mat_tmp[0]+ mat_act[cont-3]);
             mat_tmp1[1]=(mat_tmp[1]+ mat_act[cont-2]);
@@ -210,6 +222,7 @@
         if(mat_act[i]==255){
             for(uint8_t a=i;a>=1;a--){
                 sendSPI(a,mat_act[a-1]);
+                mat_act[a]=mat_act[a-1];
             }
         }
     }
@@ -227,8 +240,9 @@
                         dibujar(ficha,grados,ncolumna);
                         buscar_fil();
                         imp_mat(mat_tmp);
-                        }
-            buscar_linea();            
+                        wait_ms(VEL*2);
+                        }       
             guardar_mat();
+            buscar_linea(); 
         }
     }
\ No newline at end of file