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@2:15facba8b8b4, 2018-11-17 (annotated)
- Committer:
- cristianvillarraga
- Date:
- Sat Nov 17 04:44:57 2018 +0000
- Revision:
- 2:15facba8b8b4
- Parent:
- 1:ebfb091d5b63
- Child:
- 3:8a8ff76e84bc
codigo mejorado
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 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 | 2:15facba8b8b4 | 75 | |
| cristianvillarraga | 1:ebfb091d5b63 | 76 | void mover_fig()//mueve la figura por medio de botones |
| cristianvillarraga | 1:ebfb091d5b63 | 77 | { |
| cristianvillarraga | 2:15facba8b8b4 | 78 | analogo(); |
| cristianvillarraga | 1:ebfb091d5b63 | 79 | |
| cristianvillarraga | 2:15facba8b8b4 | 80 | if(my>0.8) |
| cristianvillarraga | 1:ebfb091d5b63 | 81 | { |
| cristianvillarraga | 1:ebfb091d5b63 | 82 | grad++; |
| cristianvillarraga | 2:15facba8b8b4 | 83 | if(grad<5) |
| cristianvillarraga | 2:15facba8b8b4 | 84 | { |
| cristianvillarraga | 1:ebfb091d5b63 | 85 | |
| cristianvillarraga | 2:15facba8b8b4 | 86 | switch (grad) |
| cristianvillarraga | 2:15facba8b8b4 | 87 | { |
| cristianvillarraga | 1:ebfb091d5b63 | 88 | case 1: |
| cristianvillarraga | 1:ebfb091d5b63 | 89 | mat_tmp[0]=mat_tmp1[4]; |
| cristianvillarraga | 1:ebfb091d5b63 | 90 | mat_tmp[1]=mat_tmp1[5]; |
| cristianvillarraga | 1:ebfb091d5b63 | 91 | mat_tmp[2]=mat_tmp1[6]; |
| cristianvillarraga | 1:ebfb091d5b63 | 92 | break; |
| cristianvillarraga | 1:ebfb091d5b63 | 93 | case 2: |
| cristianvillarraga | 1:ebfb091d5b63 | 94 | mat_tmp[0]=mat_tmp1[0]; |
| cristianvillarraga | 1:ebfb091d5b63 | 95 | mat_tmp[1]=mat_tmp1[2]; |
| cristianvillarraga | 1:ebfb091d5b63 | 96 | mat_tmp[2]=mat_tmp1[1]; |
| cristianvillarraga | 1:ebfb091d5b63 | 97 | break; |
| cristianvillarraga | 1:ebfb091d5b63 | 98 | case 3: |
| cristianvillarraga | 1:ebfb091d5b63 | 99 | mat_tmp[0]=mat_tmp1[6]; |
| cristianvillarraga | 1:ebfb091d5b63 | 100 | mat_tmp[1]=mat_tmp1[5]; |
| cristianvillarraga | 1:ebfb091d5b63 | 101 | mat_tmp[2]=mat_tmp1[4]; |
| cristianvillarraga | 1:ebfb091d5b63 | 102 | break; |
| cristianvillarraga | 1:ebfb091d5b63 | 103 | case 4: |
| cristianvillarraga | 1:ebfb091d5b63 | 104 | mat_tmp[0]=mat_tmp1[0]; |
| cristianvillarraga | 1:ebfb091d5b63 | 105 | mat_tmp[1]=mat_tmp1[1]; |
| cristianvillarraga | 1:ebfb091d5b63 | 106 | mat_tmp[2]=mat_tmp1[2]; |
| cristianvillarraga | 1:ebfb091d5b63 | 107 | break; |
| cristianvillarraga | 2:15facba8b8b4 | 108 | } |
| cristianvillarraga | 1:ebfb091d5b63 | 109 | } |
| cristianvillarraga | 2:15facba8b8b4 | 110 | if(grad>4) |
| cristianvillarraga | 2:15facba8b8b4 | 111 | { |
| cristianvillarraga | 1:ebfb091d5b63 | 112 | grad=0; |
| cristianvillarraga | 1:ebfb091d5b63 | 113 | } |
| cristianvillarraga | 2:15facba8b8b4 | 114 | } |
| cristianvillarraga | 2:15facba8b8b4 | 115 | if(mx<0.3) |
| cristianvillarraga | 2:15facba8b8b4 | 116 | { |
| cristianvillarraga | 2:15facba8b8b4 | 117 | int temp1 = mat_tmp[i+1]&(0x01); |
| cristianvillarraga | 2:15facba8b8b4 | 118 | if(temp1==0) |
| cristianvillarraga | 2:15facba8b8b4 | 119 | { |
| cristianvillarraga | 2:15facba8b8b4 | 120 | for(int i=0;i<7;i++) |
| cristianvillarraga | 1:ebfb091d5b63 | 121 | { |
| cristianvillarraga | 2:15facba8b8b4 | 122 | mat_tmp[i]=mat_tmp[i]>>1; |
| cristianvillarraga | 2:15facba8b8b4 | 123 | } |
| cristianvillarraga | 2:15facba8b8b4 | 124 | } |
| cristianvillarraga | 2:15facba8b8b4 | 125 | } //mover figura a la derecha |
| cristianvillarraga | 2:15facba8b8b4 | 126 | |
| cristianvillarraga | 2:15facba8b8b4 | 127 | if(mx>0.8) |
| cristianvillarraga | 2:15facba8b8b4 | 128 | { |
| cristianvillarraga | 2:15facba8b8b4 | 129 | int temp2 = mat_tmp[i+2]&(0x80); |
| cristianvillarraga | 2:15facba8b8b4 | 130 | if(temp2==0) |
| cristianvillarraga | 2:15facba8b8b4 | 131 | { |
| cristianvillarraga | 2:15facba8b8b4 | 132 | for(int i=0;i<7;i++) |
| cristianvillarraga | 2:15facba8b8b4 | 133 | { |
| cristianvillarraga | 2:15facba8b8b4 | 134 | mat_tmp[i]=mat_tmp[i]<<1; //mover izquierda |
| cristianvillarraga | 2:15facba8b8b4 | 135 | } |
| cristianvillarraga | 2:15facba8b8b4 | 136 | }//mover figura a la izquierda |
| cristianvillarraga | 2:15facba8b8b4 | 137 | } |
| cristianvillarraga | 1:ebfb091d5b63 | 138 | } |
| cristianvillarraga | 1:ebfb091d5b63 | 139 | void act_matrix(uint8_t* temp)//Evalua figura guardada y su espacio |
| cristianvillarraga | 1:ebfb091d5b63 | 140 | { |
| cristianvillarraga | 2:15facba8b8b4 | 141 | for (int i=0;i<9;i++){ |
| cristianvillarraga | 1:ebfb091d5b63 | 142 | save=*(temp+2)& mat_act[i]; |
| cristianvillarraga | 1:ebfb091d5b63 | 143 | if (save==0 ) |
| cristianvillarraga | 1:ebfb091d5b63 | 144 | { |
| cristianvillarraga | 1:ebfb091d5b63 | 145 | fila=i+1; |
| cristianvillarraga | 1:ebfb091d5b63 | 146 | } |
| cristianvillarraga | 1:ebfb091d5b63 | 147 | if (save!=0) |
| cristianvillarraga | 1:ebfb091d5b63 | 148 | { |
| cristianvillarraga | 1:ebfb091d5b63 | 149 | fila=i; |
| cristianvillarraga | 1:ebfb091d5b63 | 150 | i=9; |
| cristianvillarraga | 1:ebfb091d5b63 | 151 | } |
| cristianvillarraga | 1:ebfb091d5b63 | 152 | } |
| cristianvillarraga | 1:ebfb091d5b63 | 153 | } |
| cristianvillarraga | 1:ebfb091d5b63 | 154 | |
| cristianvillarraga | 1:ebfb091d5b63 | 155 | void guardar_mat(uint8_t *temp)//guarda la matriz |
| cristianvillarraga | 1:ebfb091d5b63 | 156 | { |
| cristianvillarraga | 1:ebfb091d5b63 | 157 | mat_act[fila-3]=(*(temp+0))| mat_act[fila-3]; |
| cristianvillarraga | 1:ebfb091d5b63 | 158 | mat_act[fila-2]=(*(temp+1))| mat_act[fila-2]; |
| cristianvillarraga | 1:ebfb091d5b63 | 159 | mat_act[fila-1]=(*(temp+2))| mat_act[fila-1]; |
| cristianvillarraga | 1:ebfb091d5b63 | 160 | }; |
| cristianvillarraga | 1:ebfb091d5b63 | 161 | void elim_lin() |
| cristianvillarraga | 1:ebfb091d5b63 | 162 | { |
| cristianvillarraga | 2:15facba8b8b4 | 163 | for(int i=0;i<9;i++){ |
| cristianvillarraga | 1:ebfb091d5b63 | 164 | if(mat_act[i]==255){ |
| cristianvillarraga | 1:ebfb091d5b63 | 165 | for(uint8_t a=i;a>=1;a--){ |
| cristianvillarraga | 1:ebfb091d5b63 | 166 | sendSPI(a,mat_act[a-1]); |
| cristianvillarraga | 1:ebfb091d5b63 | 167 | mat_act[a]=mat_act[a-1]; |
| cristianvillarraga | 1:ebfb091d5b63 | 168 | } |
| cristianvillarraga | 1:ebfb091d5b63 | 169 | } |
| cristianvillarraga | 1:ebfb091d5b63 | 170 | } |
| cristianvillarraga | 1:ebfb091d5b63 | 171 | } |
| cristianvillarraga | 1:ebfb091d5b63 | 172 | #endif |