Brahian Stiv Sanchez Giraldo / Mbed 2 deprecated tetrispon

Dependencies:   mbed

Committer:
cristianvillarraga
Date:
Sat Nov 17 02:16:21 2018 +0000
Revision:
1:ebfb091d5b63
Child:
2:15facba8b8b4
interfaz

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cristianvillarraga 1:ebfb091d5b63 1 #include "mbed.h"
cristianvillarraga 1:ebfb091d5b63 2 #ifndef funcion_matriz
cristianvillarraga 1:ebfb091d5b63 3 #define funcion_matriz
cristianvillarraga 1:ebfb091d5b63 4 #define MAXDAT 3
cristianvillarraga 1:ebfb091d5b63 5
cristianvillarraga 1:ebfb091d5b63 6 Serial pc(USBTX,USBRX);//conexion por puerto USB
cristianvillarraga 1:ebfb091d5b63 7
cristianvillarraga 1:ebfb091d5b63 8 uint8_t mat_act[11]={0,0,0,0,0,0,0,0,0,0,0}; //Matriz para mostrar en pantalla.
cristianvillarraga 1:ebfb091d5b63 9 uint8_t mat_tmp[8]={0,0,0,0,0,0,0,0};
cristianvillarraga 1:ebfb091d5b63 10 uint8_t mat_tmp1[8]={0,0,0,0,0,0,0,0}; //Matriz temporal de las fichas.
cristianvillarraga 1:ebfb091d5b63 11 uint8_t dat[MAXDAT]={0,0,0};
cristianvillarraga 1:ebfb091d5b63 12 uint8_t fila=0,save=0,i=0,cont=0,mcol=0,num=0,grad=0;
cristianvillarraga 1:ebfb091d5b63 13
cristianvillarraga 1:ebfb091d5b63 14 void imp_mat(uint8_t *temp)// Hace el desplazamiento hacia abajo de la figura
cristianvillarraga 1:ebfb091d5b63 15 {
cristianvillarraga 1:ebfb091d5b63 16 sendSPI(cont-3,mat_act[cont-3]);
cristianvillarraga 1:ebfb091d5b63 17 sendSPI(cont-2,(*(temp+0) | mat_act[cont-2]));
cristianvillarraga 1:ebfb091d5b63 18 sendSPI(cont-1,(*(temp+1) | mat_act[cont-1]));
cristianvillarraga 1:ebfb091d5b63 19 sendSPI(cont,(*(temp+2) | mat_act[cont]));
cristianvillarraga 1:ebfb091d5b63 20 }
cristianvillarraga 1:ebfb091d5b63 21 uint32_t read_command() //ingresa "<",">" y define el tamaño del vector "dat"
cristianvillarraga 1:ebfb091d5b63 22 {
cristianvillarraga 1:ebfb091d5b63 23 char intc=pc.getc();
cristianvillarraga 1:ebfb091d5b63 24 while(intc != '<')
cristianvillarraga 1:ebfb091d5b63 25 intc=pc.getc();
cristianvillarraga 1:ebfb091d5b63 26 for (int i =0;i<MAXDAT;i++)
cristianvillarraga 1:ebfb091d5b63 27 dat[i]=pc.getc();
cristianvillarraga 1:ebfb091d5b63 28 intc=pc.getc();
cristianvillarraga 1:ebfb091d5b63 29 if(intc != '>'){
cristianvillarraga 1:ebfb091d5b63 30 return 0;
cristianvillarraga 1:ebfb091d5b63 31 }
cristianvillarraga 1:ebfb091d5b63 32 return 1;
cristianvillarraga 1:ebfb091d5b63 33 }
cristianvillarraga 1:ebfb091d5b63 34 void cop_fi (uint8_t* tfig) //Almacena la figura en la matriz temporal
cristianvillarraga 1:ebfb091d5b63 35 {
cristianvillarraga 1:ebfb091d5b63 36 for(i=0;i<8;i++)
cristianvillarraga 1:ebfb091d5b63 37 {
cristianvillarraga 1:ebfb091d5b63 38 mat_tmp[i]=*(tfig+i)>>dat[1]-1;
cristianvillarraga 1:ebfb091d5b63 39
cristianvillarraga 1:ebfb091d5b63 40 }
cristianvillarraga 1:ebfb091d5b63 41 for(i=0;i<8;i++)
cristianvillarraga 1:ebfb091d5b63 42 {
cristianvillarraga 1:ebfb091d5b63 43 mat_tmp1[i]= mat_tmp[i];
cristianvillarraga 1:ebfb091d5b63 44 }
cristianvillarraga 1:ebfb091d5b63 45 }
cristianvillarraga 1:ebfb091d5b63 46 void d_ale()
cristianvillarraga 1:ebfb091d5b63 47 {
cristianvillarraga 1:ebfb091d5b63 48 num=rand()%5+1;
cristianvillarraga 1:ebfb091d5b63 49 mcol=4;
cristianvillarraga 1:ebfb091d5b63 50 }
cristianvillarraga 1:ebfb091d5b63 51 void ingred_d() //Tipo de figuras
cristianvillarraga 1:ebfb091d5b63 52 {
cristianvillarraga 1:ebfb091d5b63 53 uint8_t tf=dat[0];
cristianvillarraga 1:ebfb091d5b63 54
cristianvillarraga 1:ebfb091d5b63 55 switch(tf)
cristianvillarraga 1:ebfb091d5b63 56 {
cristianvillarraga 1:ebfb091d5b63 57 case tipo_c: // Cuadrado
cristianvillarraga 1:ebfb091d5b63 58 cop_fi(FIG_C);
cristianvillarraga 1:ebfb091d5b63 59 break;
cristianvillarraga 1:ebfb091d5b63 60 case tipo_s: //S
cristianvillarraga 1:ebfb091d5b63 61 cop_fi(FIG_S);
cristianvillarraga 1:ebfb091d5b63 62 break;
cristianvillarraga 1:ebfb091d5b63 63 case tipo_t: //T
cristianvillarraga 1:ebfb091d5b63 64 cop_fi(FIG_T);
cristianvillarraga 1:ebfb091d5b63 65 break;
cristianvillarraga 1:ebfb091d5b63 66 case tipo_i: //I
cristianvillarraga 1:ebfb091d5b63 67 cop_fi(FIG_I);
cristianvillarraga 1:ebfb091d5b63 68 break;
cristianvillarraga 1:ebfb091d5b63 69 case tipo_l: //L
cristianvillarraga 1:ebfb091d5b63 70 cop_fi(FIG_L);
cristianvillarraga 1:ebfb091d5b63 71 break;
cristianvillarraga 1:ebfb091d5b63 72
cristianvillarraga 1:ebfb091d5b63 73 }
cristianvillarraga 1:ebfb091d5b63 74 }
cristianvillarraga 1:ebfb091d5b63 75 void analogoo()
cristianvillarraga 1:ebfb091d5b63 76 {
cristianvillarraga 1:ebfb091d5b63 77 mx=vrx.read();
cristianvillarraga 1:ebfb091d5b63 78 msx=mx*3300;
cristianvillarraga 1:ebfb091d5b63 79 my=vry.read();
cristianvillarraga 1:ebfb091d5b63 80 msy=my*3300;
cristianvillarraga 1:ebfb091d5b63 81 printf("Datosx = %f",msx);
cristianvillarraga 1:ebfb091d5b63 82 }
cristianvillarraga 1:ebfb091d5b63 83 void mover_fig()//mueve la figura por medio de botones
cristianvillarraga 1:ebfb091d5b63 84 {
cristianvillarraga 1:ebfb091d5b63 85 analogoo();
cristianvillarraga 1:ebfb091d5b63 86 int mfig;
cristianvillarraga 1:ebfb091d5b63 87
cristianvillarraga 1:ebfb091d5b63 88 if(msx>1800){
cristianvillarraga 1:ebfb091d5b63 89 mfig=1;}
cristianvillarraga 1:ebfb091d5b63 90 if(msy<300){//mover figura a la derecha
cristianvillarraga 1:ebfb091d5b63 91 mfig=2;}
cristianvillarraga 1:ebfb091d5b63 92 if(msy>3000){//mover figura a la izquierda
cristianvillarraga 1:ebfb091d5b63 93 mfig=3;}
cristianvillarraga 1:ebfb091d5b63 94
cristianvillarraga 1:ebfb091d5b63 95 switch(mfig)
cristianvillarraga 1:ebfb091d5b63 96 {
cristianvillarraga 1:ebfb091d5b63 97 case 1:
cristianvillarraga 1:ebfb091d5b63 98 grad++;
cristianvillarraga 1:ebfb091d5b63 99 if(grad<5){
cristianvillarraga 1:ebfb091d5b63 100
cristianvillarraga 1:ebfb091d5b63 101 switch (grad)
cristianvillarraga 1:ebfb091d5b63 102 {
cristianvillarraga 1:ebfb091d5b63 103 case 1:
cristianvillarraga 1:ebfb091d5b63 104 mat_tmp[0]=mat_tmp1[4];
cristianvillarraga 1:ebfb091d5b63 105 mat_tmp[1]=mat_tmp1[5];
cristianvillarraga 1:ebfb091d5b63 106 mat_tmp[2]=mat_tmp1[6];
cristianvillarraga 1:ebfb091d5b63 107 break;
cristianvillarraga 1:ebfb091d5b63 108 case 2:
cristianvillarraga 1:ebfb091d5b63 109 mat_tmp[0]=mat_tmp1[0];
cristianvillarraga 1:ebfb091d5b63 110 mat_tmp[1]=mat_tmp1[2];
cristianvillarraga 1:ebfb091d5b63 111 mat_tmp[2]=mat_tmp1[1];
cristianvillarraga 1:ebfb091d5b63 112 break;
cristianvillarraga 1:ebfb091d5b63 113 case 3:
cristianvillarraga 1:ebfb091d5b63 114 mat_tmp[0]=mat_tmp1[6];
cristianvillarraga 1:ebfb091d5b63 115 mat_tmp[1]=mat_tmp1[5];
cristianvillarraga 1:ebfb091d5b63 116 mat_tmp[2]=mat_tmp1[4];
cristianvillarraga 1:ebfb091d5b63 117 break;
cristianvillarraga 1:ebfb091d5b63 118 case 4:
cristianvillarraga 1:ebfb091d5b63 119 mat_tmp[0]=mat_tmp1[0];
cristianvillarraga 1:ebfb091d5b63 120 mat_tmp[1]=mat_tmp1[1];
cristianvillarraga 1:ebfb091d5b63 121 mat_tmp[2]=mat_tmp1[2];
cristianvillarraga 1:ebfb091d5b63 122 break;
cristianvillarraga 1:ebfb091d5b63 123 }
cristianvillarraga 1:ebfb091d5b63 124 }
cristianvillarraga 1:ebfb091d5b63 125 if(grad>4){
cristianvillarraga 1:ebfb091d5b63 126 grad=0;
cristianvillarraga 1:ebfb091d5b63 127 }
cristianvillarraga 1:ebfb091d5b63 128 break;
cristianvillarraga 1:ebfb091d5b63 129 case 2:
cristianvillarraga 1:ebfb091d5b63 130 int temp1 = mat_tmp[i]&(0x01);
cristianvillarraga 1:ebfb091d5b63 131 if(temp1==0)
cristianvillarraga 1:ebfb091d5b63 132 {
cristianvillarraga 1:ebfb091d5b63 133 for(i=0;i<3;i++)
cristianvillarraga 1:ebfb091d5b63 134 {
cristianvillarraga 1:ebfb091d5b63 135 mat_tmp[i]=mat_tmp[i]>>1; //mover derecha
cristianvillarraga 1:ebfb091d5b63 136
cristianvillarraga 1:ebfb091d5b63 137 }
cristianvillarraga 1:ebfb091d5b63 138 for(i=0;i<7;i++){
cristianvillarraga 1:ebfb091d5b63 139 mat_tmp1[i]=mat_tmp1[i]>>1;
cristianvillarraga 1:ebfb091d5b63 140 }
cristianvillarraga 1:ebfb091d5b63 141 }
cristianvillarraga 1:ebfb091d5b63 142 break;
cristianvillarraga 1:ebfb091d5b63 143 case 3:
cristianvillarraga 1:ebfb091d5b63 144 int temp2 = mat_tmp[i]&(0x80);
cristianvillarraga 1:ebfb091d5b63 145 if(temp2==0)
cristianvillarraga 1:ebfb091d5b63 146 {
cristianvillarraga 1:ebfb091d5b63 147 for(i=0;i<7;i++){
cristianvillarraga 1:ebfb091d5b63 148 mat_tmp1[i]=mat_tmp1[i]<<1;
cristianvillarraga 1:ebfb091d5b63 149 }
cristianvillarraga 1:ebfb091d5b63 150 for(i=0;i<3;i++)
cristianvillarraga 1:ebfb091d5b63 151 {
cristianvillarraga 1:ebfb091d5b63 152 mat_tmp[i]=mat_tmp[i]<<1; //mover izquierda
cristianvillarraga 1:ebfb091d5b63 153 }
cristianvillarraga 1:ebfb091d5b63 154 }
cristianvillarraga 1:ebfb091d5b63 155 break;
cristianvillarraga 1:ebfb091d5b63 156 }
cristianvillarraga 1:ebfb091d5b63 157 }
cristianvillarraga 1:ebfb091d5b63 158 void act_matrix(uint8_t* temp)//Evalua figura guardada y su espacio
cristianvillarraga 1:ebfb091d5b63 159 {
cristianvillarraga 1:ebfb091d5b63 160 for (i=0;i<9;i++){
cristianvillarraga 1:ebfb091d5b63 161 save=*(temp+2)& mat_act[i];
cristianvillarraga 1:ebfb091d5b63 162 if (save==0 )
cristianvillarraga 1:ebfb091d5b63 163 {
cristianvillarraga 1:ebfb091d5b63 164 fila=i+1;
cristianvillarraga 1:ebfb091d5b63 165 }
cristianvillarraga 1:ebfb091d5b63 166 if (save!=0)
cristianvillarraga 1:ebfb091d5b63 167 {
cristianvillarraga 1:ebfb091d5b63 168 fila=i;
cristianvillarraga 1:ebfb091d5b63 169 i=9;
cristianvillarraga 1:ebfb091d5b63 170 }
cristianvillarraga 1:ebfb091d5b63 171 }
cristianvillarraga 1:ebfb091d5b63 172 }
cristianvillarraga 1:ebfb091d5b63 173
cristianvillarraga 1:ebfb091d5b63 174 void guardar_mat(uint8_t *temp)//guarda la matriz
cristianvillarraga 1:ebfb091d5b63 175 {
cristianvillarraga 1:ebfb091d5b63 176 mat_act[fila-3]=(*(temp+0))| mat_act[fila-3];
cristianvillarraga 1:ebfb091d5b63 177 mat_act[fila-2]=(*(temp+1))| mat_act[fila-2];
cristianvillarraga 1:ebfb091d5b63 178 mat_act[fila-1]=(*(temp+2))| mat_act[fila-1];
cristianvillarraga 1:ebfb091d5b63 179 };
cristianvillarraga 1:ebfb091d5b63 180 void elim_lin()
cristianvillarraga 1:ebfb091d5b63 181 {
cristianvillarraga 1:ebfb091d5b63 182 for(i=0;i<9;i++){
cristianvillarraga 1:ebfb091d5b63 183 if(mat_act[i]==255){
cristianvillarraga 1:ebfb091d5b63 184 for(uint8_t a=i;a>=1;a--){
cristianvillarraga 1:ebfb091d5b63 185 sendSPI(a,mat_act[a-1]);
cristianvillarraga 1:ebfb091d5b63 186 mat_act[a]=mat_act[a-1];
cristianvillarraga 1:ebfb091d5b63 187 }
cristianvillarraga 1:ebfb091d5b63 188 }
cristianvillarraga 1:ebfb091d5b63 189 }
cristianvillarraga 1:ebfb091d5b63 190 }
cristianvillarraga 1:ebfb091d5b63 191 #endif