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@3:8a8ff76e84bc, 2018-11-18 (annotated)
- Committer:
- sanchezzbrahian
- Date:
- Sun Nov 18 04:56:35 2018 +0000
- Revision:
- 3:8a8ff76e84bc
- Parent:
- 2:15facba8b8b4
tetri y pinpo;
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 | 2:15facba8b8b4 | 12 | uint8_t fila=0,save=0,cont=0,num=0,grad=0,mcol=0,i; |
cristianvillarraga | 1:ebfb091d5b63 | 13 | |
cristianvillarraga | 2:15facba8b8b4 | 14 | void imp_mat(uint8_t *temp) |
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 | 2:15facba8b8b4 | 36 | for(int 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 | 2:15facba8b8b4 | 41 | for(int 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 ingred_d() //Tipo de figuras |
cristianvillarraga | 1:ebfb091d5b63 | 47 | { |
cristianvillarraga | 1:ebfb091d5b63 | 48 | uint8_t tf=dat[0]; |
cristianvillarraga | 1:ebfb091d5b63 | 49 | |
cristianvillarraga | 1:ebfb091d5b63 | 50 | switch(tf) |
cristianvillarraga | 1:ebfb091d5b63 | 51 | { |
cristianvillarraga | 1:ebfb091d5b63 | 52 | case tipo_c: // Cuadrado |
cristianvillarraga | 1:ebfb091d5b63 | 53 | cop_fi(FIG_C); |
cristianvillarraga | 1:ebfb091d5b63 | 54 | break; |
cristianvillarraga | 1:ebfb091d5b63 | 55 | case tipo_s: //S |
cristianvillarraga | 1:ebfb091d5b63 | 56 | cop_fi(FIG_S); |
cristianvillarraga | 1:ebfb091d5b63 | 57 | break; |
cristianvillarraga | 1:ebfb091d5b63 | 58 | case tipo_t: //T |
cristianvillarraga | 1:ebfb091d5b63 | 59 | cop_fi(FIG_T); |
cristianvillarraga | 1:ebfb091d5b63 | 60 | break; |
cristianvillarraga | 1:ebfb091d5b63 | 61 | case tipo_i: //I |
cristianvillarraga | 1:ebfb091d5b63 | 62 | cop_fi(FIG_I); |
cristianvillarraga | 1:ebfb091d5b63 | 63 | break; |
cristianvillarraga | 1:ebfb091d5b63 | 64 | case tipo_l: //L |
cristianvillarraga | 1:ebfb091d5b63 | 65 | cop_fi(FIG_L); |
cristianvillarraga | 1:ebfb091d5b63 | 66 | break; |
cristianvillarraga | 1:ebfb091d5b63 | 67 | |
cristianvillarraga | 1:ebfb091d5b63 | 68 | } |
cristianvillarraga | 1:ebfb091d5b63 | 69 | } |
cristianvillarraga | 2:15facba8b8b4 | 70 | |
cristianvillarraga | 1:ebfb091d5b63 | 71 | void mover_fig()//mueve la figura por medio de botones |
cristianvillarraga | 1:ebfb091d5b63 | 72 | { |
cristianvillarraga | 2:15facba8b8b4 | 73 | analogo(); |
sanchezzbrahian | 3:8a8ff76e84bc | 74 | |
sanchezzbrahian | 3:8a8ff76e84bc | 75 | |
sanchezzbrahian | 3:8a8ff76e84bc | 76 | if(mx<0.1) |
sanchezzbrahian | 3:8a8ff76e84bc | 77 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 78 | int temp1 = mat_tmp[i+1]&(0x01); |
sanchezzbrahian | 3:8a8ff76e84bc | 79 | if(temp1==0) |
sanchezzbrahian | 3:8a8ff76e84bc | 80 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 81 | for(int i=0;i<7;i++) |
sanchezzbrahian | 3:8a8ff76e84bc | 82 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 83 | mat_tmp[i]=mat_tmp[i]>>1; |
sanchezzbrahian | 3:8a8ff76e84bc | 84 | } |
sanchezzbrahian | 3:8a8ff76e84bc | 85 | } |
sanchezzbrahian | 3:8a8ff76e84bc | 86 | } //mover figura a la derecha |
sanchezzbrahian | 3:8a8ff76e84bc | 87 | |
sanchezzbrahian | 3:8a8ff76e84bc | 88 | if(mx>0.9) |
sanchezzbrahian | 3:8a8ff76e84bc | 89 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 90 | int temp2 = mat_tmp[i+2]&(0x80); |
sanchezzbrahian | 3:8a8ff76e84bc | 91 | if(temp2==0) |
sanchezzbrahian | 3:8a8ff76e84bc | 92 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 93 | for(int i=0;i<7;i++) |
sanchezzbrahian | 3:8a8ff76e84bc | 94 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 95 | mat_tmp[i]=mat_tmp[i]<<1; |
sanchezzbrahian | 3:8a8ff76e84bc | 96 | } |
sanchezzbrahian | 3:8a8ff76e84bc | 97 | }//mover figura a la izquierda |
sanchezzbrahian | 3:8a8ff76e84bc | 98 | } |
sanchezzbrahian | 3:8a8ff76e84bc | 99 | } |
sanchezzbrahian | 3:8a8ff76e84bc | 100 | |
sanchezzbrahian | 3:8a8ff76e84bc | 101 | void rotar_fig() |
sanchezzbrahian | 3:8a8ff76e84bc | 102 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 103 | analogo(); |
sanchezzbrahian | 3:8a8ff76e84bc | 104 | if(my>0.6) |
cristianvillarraga | 1:ebfb091d5b63 | 105 | { |
cristianvillarraga | 1:ebfb091d5b63 | 106 | grad++; |
cristianvillarraga | 2:15facba8b8b4 | 107 | if(grad<5) |
cristianvillarraga | 2:15facba8b8b4 | 108 | { |
cristianvillarraga | 2:15facba8b8b4 | 109 | switch (grad) |
cristianvillarraga | 2:15facba8b8b4 | 110 | { |
cristianvillarraga | 1:ebfb091d5b63 | 111 | case 1: |
cristianvillarraga | 1:ebfb091d5b63 | 112 | mat_tmp[0]=mat_tmp1[4]; |
cristianvillarraga | 1:ebfb091d5b63 | 113 | mat_tmp[1]=mat_tmp1[5]; |
cristianvillarraga | 1:ebfb091d5b63 | 114 | mat_tmp[2]=mat_tmp1[6]; |
cristianvillarraga | 1:ebfb091d5b63 | 115 | break; |
cristianvillarraga | 1:ebfb091d5b63 | 116 | case 2: |
cristianvillarraga | 1:ebfb091d5b63 | 117 | mat_tmp[0]=mat_tmp1[0]; |
cristianvillarraga | 1:ebfb091d5b63 | 118 | mat_tmp[1]=mat_tmp1[2]; |
cristianvillarraga | 1:ebfb091d5b63 | 119 | mat_tmp[2]=mat_tmp1[1]; |
cristianvillarraga | 1:ebfb091d5b63 | 120 | break; |
cristianvillarraga | 1:ebfb091d5b63 | 121 | case 3: |
cristianvillarraga | 1:ebfb091d5b63 | 122 | mat_tmp[0]=mat_tmp1[6]; |
cristianvillarraga | 1:ebfb091d5b63 | 123 | mat_tmp[1]=mat_tmp1[5]; |
cristianvillarraga | 1:ebfb091d5b63 | 124 | mat_tmp[2]=mat_tmp1[4]; |
cristianvillarraga | 1:ebfb091d5b63 | 125 | break; |
cristianvillarraga | 1:ebfb091d5b63 | 126 | case 4: |
cristianvillarraga | 1:ebfb091d5b63 | 127 | mat_tmp[0]=mat_tmp1[0]; |
cristianvillarraga | 1:ebfb091d5b63 | 128 | mat_tmp[1]=mat_tmp1[1]; |
cristianvillarraga | 1:ebfb091d5b63 | 129 | mat_tmp[2]=mat_tmp1[2]; |
cristianvillarraga | 1:ebfb091d5b63 | 130 | break; |
cristianvillarraga | 2:15facba8b8b4 | 131 | } |
cristianvillarraga | 1:ebfb091d5b63 | 132 | } |
cristianvillarraga | 2:15facba8b8b4 | 133 | if(grad>4) |
cristianvillarraga | 2:15facba8b8b4 | 134 | { |
cristianvillarraga | 1:ebfb091d5b63 | 135 | grad=0; |
cristianvillarraga | 1:ebfb091d5b63 | 136 | } |
sanchezzbrahian | 3:8a8ff76e84bc | 137 | } |
sanchezzbrahian | 3:8a8ff76e84bc | 138 | } |
sanchezzbrahian | 3:8a8ff76e84bc | 139 | |
sanchezzbrahian | 3:8a8ff76e84bc | 140 | void act_matrix(uint8_t*temp)//Evalua figura guardada y su espacio |
sanchezzbrahian | 3:8a8ff76e84bc | 141 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 142 | for (int i=0;i<9;i++) |
sanchezzbrahian | 3:8a8ff76e84bc | 143 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 144 | save=*(temp+2)& mat_act[i]; |
sanchezzbrahian | 3:8a8ff76e84bc | 145 | if (save==0 ) |
cristianvillarraga | 2:15facba8b8b4 | 146 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 147 | fila=i+1; |
sanchezzbrahian | 3:8a8ff76e84bc | 148 | } |
sanchezzbrahian | 3:8a8ff76e84bc | 149 | if (save!=0) |
sanchezzbrahian | 3:8a8ff76e84bc | 150 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 151 | fila=i; |
sanchezzbrahian | 3:8a8ff76e84bc | 152 | i=9; |
sanchezzbrahian | 3:8a8ff76e84bc | 153 | } |
sanchezzbrahian | 3:8a8ff76e84bc | 154 | } |
sanchezzbrahian | 3:8a8ff76e84bc | 155 | |
cristianvillarraga | 1:ebfb091d5b63 | 156 | } |
cristianvillarraga | 1:ebfb091d5b63 | 157 | |
cristianvillarraga | 1:ebfb091d5b63 | 158 | void guardar_mat(uint8_t *temp)//guarda la matriz |
cristianvillarraga | 1:ebfb091d5b63 | 159 | { |
cristianvillarraga | 1:ebfb091d5b63 | 160 | mat_act[fila-3]=(*(temp+0))| mat_act[fila-3]; |
cristianvillarraga | 1:ebfb091d5b63 | 161 | mat_act[fila-2]=(*(temp+1))| mat_act[fila-2]; |
cristianvillarraga | 1:ebfb091d5b63 | 162 | mat_act[fila-1]=(*(temp+2))| mat_act[fila-1]; |
sanchezzbrahian | 3:8a8ff76e84bc | 163 | |
cristianvillarraga | 1:ebfb091d5b63 | 164 | }; |
sanchezzbrahian | 3:8a8ff76e84bc | 165 | void most_fail() |
sanchezzbrahian | 3:8a8ff76e84bc | 166 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 167 | |
sanchezzbrahian | 3:8a8ff76e84bc | 168 | if(j+1==7){ |
sanchezzbrahian | 3:8a8ff76e84bc | 169 | mat_act[i] = 0x00; |
sanchezzbrahian | 3:8a8ff76e84bc | 170 | mat_act[i+1] = 0x00;} |
sanchezzbrahian | 3:8a8ff76e84bc | 171 | |
sanchezzbrahian | 3:8a8ff76e84bc | 172 | |
sanchezzbrahian | 3:8a8ff76e84bc | 173 | } |
cristianvillarraga | 1:ebfb091d5b63 | 174 | void elim_lin() |
cristianvillarraga | 1:ebfb091d5b63 | 175 | { |
sanchezzbrahian | 3:8a8ff76e84bc | 176 | for(i=0;i<9;i++){ |
cristianvillarraga | 1:ebfb091d5b63 | 177 | if(mat_act[i]==255){ |
cristianvillarraga | 1:ebfb091d5b63 | 178 | for(uint8_t a=i;a>=1;a--){ |
cristianvillarraga | 1:ebfb091d5b63 | 179 | sendSPI(a,mat_act[a-1]); |
cristianvillarraga | 1:ebfb091d5b63 | 180 | mat_act[a]=mat_act[a-1]; |
cristianvillarraga | 1:ebfb091d5b63 | 181 | } |
cristianvillarraga | 1:ebfb091d5b63 | 182 | } |
cristianvillarraga | 1:ebfb091d5b63 | 183 | } |
cristianvillarraga | 1:ebfb091d5b63 | 184 | } |
cristianvillarraga | 1:ebfb091d5b63 | 185 | #endif |