Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
funcion_matriz.h@1:ebfb091d5b63, 2018-11-17 (annotated)
- Committer:
- cristianvillarraga
- Date:
- Sat Nov 17 02:16:21 2018 +0000
- Revision:
- 1:ebfb091d5b63
- Child:
- 2:15facba8b8b4
interfaz
Who changed what in which revision?
| User | Revision | Line number | New 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 |