mbedbidos
/
METRIX_presentacion
corrección spi.
Diff: metrix.cpp
- Revision:
- 3:7ae3dd76ba0a
- Parent:
- 2:fc251f89bd1b
- Child:
- 4:78194ed9ff6b
diff -r fc251f89bd1b -r 7ae3dd76ba0a metrix.cpp --- 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