cualquier cosa

Dependencies:   mbed

Fork of 00_LAB_matrix8x8_SPI by ferney alberto beltran molina

Committer:
oggonei
Date:
Thu Sep 06 14:22:35 2018 +0000
Revision:
5:377b23953ba1
Parent:
4:b38a9b0501dc
Child:
7:315c0b5f9425
Comunicacion serail tetris 6/9/18

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oggonei 4:b38a9b0501dc 1 #include "mbed.h"
fabeltranm 0:61199d9d0aed 2
oggonei 4:b38a9b0501dc 3 SPI deviceM(PB_5, PB_4, PB_3);
oggonei 4:b38a9b0501dc 4 DigitalOut ssel (PB_9);
oggonei 5:377b23953ba1 5 Serial command(USBTX,USBRX);
oggonei 5:377b23953ba1 6
oggonei 5:377b23953ba1 7 #define FIG_C 0x01
oggonei 5:377b23953ba1 8 #define FIG_I 0x02
oggonei 5:377b23953ba1 9 #define FIG_L 0x03
oggonei 5:377b23953ba1 10 #define FIG_T 0x04
oggonei 5:377b23953ba1 11 #define FIG_S 0x05
oggonei 4:b38a9b0501dc 12
oggonei 4:b38a9b0501dc 13 //#define uint8_t unsigned char
oggonei 4:b38a9b0501dc 14 //uint8_t vcol2[8]={0,0,0,0,0,0,0,0};
fabeltranm 0:61199d9d0aed 15
oggonei 4:b38a9b0501dc 16 int enviarficha(int x,int y)
oggonei 4:b38a9b0501dc 17 {
oggonei 4:b38a9b0501dc 18 int k=y;
oggonei 4:b38a9b0501dc 19
oggonei 4:b38a9b0501dc 20 if(x==1) // cuadrado
oggonei 4:b38a9b0501dc 21 {
oggonei 4:b38a9b0501dc 22 return k;
oggonei 4:b38a9b0501dc 23 }
oggonei 4:b38a9b0501dc 24 else if (x==2) //linea
oggonei 4:b38a9b0501dc 25 {
oggonei 4:b38a9b0501dc 26 return k;
oggonei 4:b38a9b0501dc 27 }
oggonei 4:b38a9b0501dc 28 else if (x==3) //ele
oggonei 4:b38a9b0501dc 29 {
oggonei 4:b38a9b0501dc 30 return k;
oggonei 4:b38a9b0501dc 31 }
oggonei 4:b38a9b0501dc 32 else if (x==4) //te
oggonei 4:b38a9b0501dc 33 {
oggonei 4:b38a9b0501dc 34 return k;
oggonei 4:b38a9b0501dc 35 }
oggonei 4:b38a9b0501dc 36 else if (x==5) //ese
oggonei 4:b38a9b0501dc 37 {
oggonei 4:b38a9b0501dc 38 return k;
oggonei 4:b38a9b0501dc 39 }
oggonei 4:b38a9b0501dc 40 else
oggonei 4:b38a9b0501dc 41 return 1;
oggonei 4:b38a9b0501dc 42 }
fabeltranm 0:61199d9d0aed 43
fabeltranm 0:61199d9d0aed 44 void sendSPI(uint8_t d1, uint8_t d2)
fabeltranm 0:61199d9d0aed 45 {
fabeltranm 0:61199d9d0aed 46 deviceM.unlock();
fabeltranm 0:61199d9d0aed 47 ssel=0;
oggonei 4:b38a9b0501dc 48 deviceM.write(d1);
oggonei 4:b38a9b0501dc 49 deviceM.write(d2);
fabeltranm 0:61199d9d0aed 50 ssel=1;
fabeltranm 0:61199d9d0aed 51 deviceM.lock();
fabeltranm 0:61199d9d0aed 52 };
fabeltranm 0:61199d9d0aed 53
oggonei 4:b38a9b0501dc 54 void test() //test
oggonei 4:b38a9b0501dc 55 {
oggonei 4:b38a9b0501dc 56 sendSPI(0x0F,1);
oggonei 4:b38a9b0501dc 57 wait(0.5);
oggonei 4:b38a9b0501dc 58 sendSPI(0x0F,0);
oggonei 4:b38a9b0501dc 59 wait(0.5);
oggonei 4:b38a9b0501dc 60 };
fabeltranm 0:61199d9d0aed 61
oggonei 5:377b23953ba1 62 void cuadro(int x,int y)
fabeltranm 0:61199d9d0aed 63 {
oggonei 4:b38a9b0501dc 64 int j,r;
oggonei 4:b38a9b0501dc 65
oggonei 4:b38a9b0501dc 66 if (x==1)
oggonei 4:b38a9b0501dc 67 r=0xC0;
oggonei 4:b38a9b0501dc 68 else if(x==2)
oggonei 4:b38a9b0501dc 69 r=0x60;
oggonei 4:b38a9b0501dc 70 else if(x==3)
oggonei 4:b38a9b0501dc 71 r=0x30;
oggonei 4:b38a9b0501dc 72 else if(x==4)
oggonei 4:b38a9b0501dc 73 r=0x18;
oggonei 4:b38a9b0501dc 74 else if(x==5)
oggonei 4:b38a9b0501dc 75 r=0xC;
oggonei 4:b38a9b0501dc 76 else if(x==6)
oggonei 4:b38a9b0501dc 77 r=0x06;
oggonei 4:b38a9b0501dc 78 else if(x==7)
oggonei 4:b38a9b0501dc 79 r=0x03;
oggonei 4:b38a9b0501dc 80 else if(x==8)
oggonei 4:b38a9b0501dc 81 r=0x01;
oggonei 4:b38a9b0501dc 82 {
oggonei 4:b38a9b0501dc 83 for(j=0;j<=7;j++)
oggonei 4:b38a9b0501dc 84 {
oggonei 4:b38a9b0501dc 85 sendSPI(0x0+j,r);
oggonei 4:b38a9b0501dc 86 sendSPI(0x0+(j+1),r);
oggonei 4:b38a9b0501dc 87 wait_ms(200);
oggonei 4:b38a9b0501dc 88 sendSPI(0x0+j,0x00);
oggonei 4:b38a9b0501dc 89 sendSPI(0x0+(j+1),0x00);
oggonei 4:b38a9b0501dc 90 wait_us(10);
oggonei 4:b38a9b0501dc 91 }
oggonei 4:b38a9b0501dc 92 sendSPI(0x07,r);
oggonei 4:b38a9b0501dc 93 sendSPI(0x08,r);
oggonei 4:b38a9b0501dc 94 }
oggonei 4:b38a9b0501dc 95 };
fabeltranm 2:414129d953dd 96
oggonei 5:377b23953ba1 97 void linea(int x,int y)
oggonei 4:b38a9b0501dc 98 {
oggonei 5:377b23953ba1 99 int j,r=y;
oggonei 5:377b23953ba1 100 int lin0[8]={0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1};
oggonei 5:377b23953ba1 101 int lin90[8]={0xe0,0x70,0x38,0x1c,0x56,0x6f,0x6f,0x6f};
fabeltranm 2:414129d953dd 102 {
oggonei 5:377b23953ba1 103 switch (r){
oggonei 5:377b23953ba1 104 case 1: for(j=0;j<=6;j++)
oggonei 4:b38a9b0501dc 105 {
oggonei 5:377b23953ba1 106 sendSPI(0x0+j,lin0[x]);
oggonei 5:377b23953ba1 107 sendSPI(0x0+(j+1),lin0[x]);
oggonei 5:377b23953ba1 108 sendSPI(0x0+(j+2),lin0[x]);
oggonei 4:b38a9b0501dc 109 wait_ms(200);
oggonei 4:b38a9b0501dc 110 sendSPI(0x0+j,0x00);
oggonei 4:b38a9b0501dc 111 sendSPI(0x0+(j+1),0x00);
oggonei 4:b38a9b0501dc 112 sendSPI(0x0+(j+2),0x00);
oggonei 4:b38a9b0501dc 113 wait_us(10);
oggonei 4:b38a9b0501dc 114 }
oggonei 5:377b23953ba1 115 sendSPI(0x06,lin0[x]);
oggonei 5:377b23953ba1 116 sendSPI(0x07,lin0[x]);
oggonei 5:377b23953ba1 117 sendSPI(0x08,lin0[x]);
oggonei 5:377b23953ba1 118 break;
oggonei 5:377b23953ba1 119 case 2:
oggonei 5:377b23953ba1 120 for(j=0;j<=6;j++)
oggonei 5:377b23953ba1 121 {
oggonei 5:377b23953ba1 122 sendSPI(0x0+j,lin90[x]);
oggonei 5:377b23953ba1 123 wait_ms(200);
oggonei 5:377b23953ba1 124 sendSPI(0x0+j,0x00);
oggonei 5:377b23953ba1 125 wait_us(10);
oggonei 5:377b23953ba1 126 }
oggonei 5:377b23953ba1 127 sendSPI(0x06,lin90[x]);
oggonei 5:377b23953ba1 128 sendSPI(0x07,lin90[x]);
oggonei 5:377b23953ba1 129 sendSPI(0x08,lin90[x]);
oggonei 5:377b23953ba1 130 break;
oggonei 5:377b23953ba1 131 //case 3: ele(columna,grados); break;
oggonei 5:377b23953ba1 132 //case 4: te(columna,grados); break;
oggonei 5:377b23953ba1 133 }
oggonei 5:377b23953ba1 134
oggonei 5:377b23953ba1 135 }
oggonei 4:b38a9b0501dc 136 };
oggonei 4:b38a9b0501dc 137
oggonei 5:377b23953ba1 138 void ele(int x,int y)
fabeltranm 2:414129d953dd 139 {
oggonei 4:b38a9b0501dc 140 int j,r,r2;
oggonei 4:b38a9b0501dc 141 if (x==1)
oggonei 4:b38a9b0501dc 142 {
oggonei 4:b38a9b0501dc 143 r=0xC0;
oggonei 4:b38a9b0501dc 144 r2=0x80;
oggonei 4:b38a9b0501dc 145 }
oggonei 4:b38a9b0501dc 146 else if(x==2)
oggonei 4:b38a9b0501dc 147 {
oggonei 4:b38a9b0501dc 148 r=0x60;
oggonei 4:b38a9b0501dc 149 r2=0x40;
oggonei 4:b38a9b0501dc 150 }
oggonei 4:b38a9b0501dc 151 else if(x==3)
oggonei 4:b38a9b0501dc 152 {
oggonei 4:b38a9b0501dc 153 r=0x30;
oggonei 4:b38a9b0501dc 154 r2=0x20;
oggonei 4:b38a9b0501dc 155 }
oggonei 4:b38a9b0501dc 156 else if(x==4)
oggonei 4:b38a9b0501dc 157 {
oggonei 4:b38a9b0501dc 158 r=0x18;
oggonei 4:b38a9b0501dc 159 r2=0x10;
oggonei 4:b38a9b0501dc 160 }
oggonei 4:b38a9b0501dc 161 else if(x==5)
oggonei 4:b38a9b0501dc 162 {
oggonei 4:b38a9b0501dc 163 r=0xC;
oggonei 4:b38a9b0501dc 164 r2=0x08;
oggonei 4:b38a9b0501dc 165 }
oggonei 4:b38a9b0501dc 166 else if(x==6)
oggonei 4:b38a9b0501dc 167 {
oggonei 4:b38a9b0501dc 168 r=0x06;
oggonei 4:b38a9b0501dc 169 r2=0x04;
oggonei 4:b38a9b0501dc 170 }
oggonei 4:b38a9b0501dc 171 else if(x==7)
oggonei 4:b38a9b0501dc 172 {
oggonei 4:b38a9b0501dc 173 r=0x03;
oggonei 4:b38a9b0501dc 174 r2=0x02;
oggonei 4:b38a9b0501dc 175 }
oggonei 4:b38a9b0501dc 176 else if(x==8)
oggonei 4:b38a9b0501dc 177 {
oggonei 4:b38a9b0501dc 178 r=0x01;
oggonei 4:b38a9b0501dc 179 r2=0x01;
oggonei 4:b38a9b0501dc 180 }
oggonei 4:b38a9b0501dc 181 {
oggonei 4:b38a9b0501dc 182 for(j=0;j<=6;j++)
oggonei 4:b38a9b0501dc 183 {
oggonei 4:b38a9b0501dc 184 sendSPI(0x0+j,r2);
oggonei 4:b38a9b0501dc 185 sendSPI(0x0+(j+1),r2);
oggonei 4:b38a9b0501dc 186 sendSPI(0x0+(j+2),r);
oggonei 4:b38a9b0501dc 187 wait_ms(200);
oggonei 4:b38a9b0501dc 188 sendSPI(0x0+j,0x00);
oggonei 4:b38a9b0501dc 189 sendSPI(0x0+(j+1),0x00);
oggonei 4:b38a9b0501dc 190 sendSPI(0x0+(j+2),0x00);
oggonei 4:b38a9b0501dc 191 wait_us(10);
oggonei 4:b38a9b0501dc 192 }
oggonei 4:b38a9b0501dc 193 sendSPI(0x06,r2);
oggonei 4:b38a9b0501dc 194 sendSPI(0x07,r2);
oggonei 4:b38a9b0501dc 195 sendSPI(0x08,r);
oggonei 4:b38a9b0501dc 196 }
oggonei 4:b38a9b0501dc 197 };
fabeltranm 2:414129d953dd 198
oggonei 5:377b23953ba1 199 void te(int x,int y)
fabeltranm 1:b732136485e0 200 {
oggonei 4:b38a9b0501dc 201 int j,r,r2;
oggonei 4:b38a9b0501dc 202
oggonei 4:b38a9b0501dc 203 if (x==1)
oggonei 4:b38a9b0501dc 204 {
oggonei 4:b38a9b0501dc 205 r=0xE0;
oggonei 4:b38a9b0501dc 206 r2=0x40;
oggonei 4:b38a9b0501dc 207 }
oggonei 4:b38a9b0501dc 208 else if(x==2)
oggonei 4:b38a9b0501dc 209 {
oggonei 4:b38a9b0501dc 210 r=0x70;
oggonei 4:b38a9b0501dc 211 r2=0x20;
oggonei 4:b38a9b0501dc 212 }
oggonei 4:b38a9b0501dc 213 else if(x==3)
oggonei 4:b38a9b0501dc 214 {
oggonei 4:b38a9b0501dc 215 r=0x38;
oggonei 4:b38a9b0501dc 216 r2=0x10;
oggonei 4:b38a9b0501dc 217 }
oggonei 4:b38a9b0501dc 218 else if(x==4)
oggonei 4:b38a9b0501dc 219 {
oggonei 4:b38a9b0501dc 220 r=0x1C;
oggonei 4:b38a9b0501dc 221 r2=0x8;
oggonei 4:b38a9b0501dc 222 }
oggonei 4:b38a9b0501dc 223 else if(x==5)
oggonei 4:b38a9b0501dc 224 {
oggonei 4:b38a9b0501dc 225 r=0xE;
oggonei 4:b38a9b0501dc 226 r2=0x4;
oggonei 4:b38a9b0501dc 227 }
oggonei 4:b38a9b0501dc 228 else if(x==6)
oggonei 4:b38a9b0501dc 229 {
oggonei 4:b38a9b0501dc 230 r=0x7;
oggonei 4:b38a9b0501dc 231 r2=0x2;
oggonei 4:b38a9b0501dc 232 }
oggonei 4:b38a9b0501dc 233 else if(x==7)
oggonei 4:b38a9b0501dc 234 {
oggonei 4:b38a9b0501dc 235 r=0x03;
oggonei 4:b38a9b0501dc 236 r2=0x1;
oggonei 4:b38a9b0501dc 237 }
oggonei 4:b38a9b0501dc 238 else if(x==8)
oggonei 4:b38a9b0501dc 239 r=0x01;
oggonei 4:b38a9b0501dc 240 {
oggonei 4:b38a9b0501dc 241 for(j=0;j<=7;j++)
oggonei 4:b38a9b0501dc 242 {
oggonei 4:b38a9b0501dc 243 sendSPI(0x0+j,r2);
oggonei 4:b38a9b0501dc 244 sendSPI(0x0+(j+1),r);
oggonei 4:b38a9b0501dc 245 wait_ms(200);
oggonei 4:b38a9b0501dc 246 sendSPI(0x0+j,0x00);
oggonei 4:b38a9b0501dc 247 sendSPI(0x0+(j+1),0x00);
oggonei 4:b38a9b0501dc 248 wait_us(10);
oggonei 4:b38a9b0501dc 249 }
oggonei 4:b38a9b0501dc 250 sendSPI(0x07,r2);
oggonei 4:b38a9b0501dc 251 sendSPI(0x08,r);
oggonei 4:b38a9b0501dc 252 }
oggonei 4:b38a9b0501dc 253 };
oggonei 4:b38a9b0501dc 254
oggonei 5:377b23953ba1 255 void ese(int x,int y)
oggonei 4:b38a9b0501dc 256 {
oggonei 4:b38a9b0501dc 257 int j,r,r2;
fabeltranm 0:61199d9d0aed 258
oggonei 4:b38a9b0501dc 259 if (x==1)
oggonei 4:b38a9b0501dc 260 {
oggonei 4:b38a9b0501dc 261 r=0xC0;
oggonei 4:b38a9b0501dc 262 r2=0x60;
oggonei 4:b38a9b0501dc 263 }
oggonei 4:b38a9b0501dc 264 else if(x==2)
oggonei 4:b38a9b0501dc 265 {
oggonei 4:b38a9b0501dc 266 r=0x60;
oggonei 4:b38a9b0501dc 267 r2=0x30;
oggonei 4:b38a9b0501dc 268 }
oggonei 4:b38a9b0501dc 269 else if(x==3)
oggonei 4:b38a9b0501dc 270 {
oggonei 4:b38a9b0501dc 271 r=0x30;
oggonei 4:b38a9b0501dc 272 r2=0x18;
oggonei 4:b38a9b0501dc 273 }
oggonei 4:b38a9b0501dc 274 else if(x==4)
oggonei 4:b38a9b0501dc 275 {
oggonei 4:b38a9b0501dc 276 r=0x18;
oggonei 4:b38a9b0501dc 277 r2=0xC;
oggonei 4:b38a9b0501dc 278 }
oggonei 4:b38a9b0501dc 279 else if(x==5)
oggonei 4:b38a9b0501dc 280 {
oggonei 4:b38a9b0501dc 281 r=0xC;
oggonei 4:b38a9b0501dc 282 r2=0x6;
oggonei 4:b38a9b0501dc 283 }
oggonei 4:b38a9b0501dc 284 else if(x==6)
oggonei 4:b38a9b0501dc 285 {
oggonei 4:b38a9b0501dc 286 r=0x6;
oggonei 4:b38a9b0501dc 287 r2=0x3;
oggonei 4:b38a9b0501dc 288 }
oggonei 4:b38a9b0501dc 289 else if(x==7)
oggonei 4:b38a9b0501dc 290 {
oggonei 4:b38a9b0501dc 291 r=0x03;
oggonei 4:b38a9b0501dc 292 r2=0x1;
oggonei 4:b38a9b0501dc 293 }
oggonei 4:b38a9b0501dc 294 else if(x==8)
oggonei 4:b38a9b0501dc 295 r=0x01;
oggonei 4:b38a9b0501dc 296 {
oggonei 4:b38a9b0501dc 297 for(j=0;j<=7;j++)
oggonei 4:b38a9b0501dc 298 {
oggonei 4:b38a9b0501dc 299 sendSPI(0x0+j,r2);
oggonei 4:b38a9b0501dc 300 sendSPI(0x0+(j+1),r);
oggonei 4:b38a9b0501dc 301 wait_ms(200);
oggonei 4:b38a9b0501dc 302 sendSPI(0x0+j,0x00);
oggonei 4:b38a9b0501dc 303 sendSPI(0x0+(j+1),0x00);
oggonei 4:b38a9b0501dc 304 wait_us(10);
oggonei 4:b38a9b0501dc 305 }
oggonei 4:b38a9b0501dc 306 sendSPI(0x07,r2);
oggonei 4:b38a9b0501dc 307 sendSPI(0x08,r);
oggonei 4:b38a9b0501dc 308 }
oggonei 4:b38a9b0501dc 309 };
oggonei 4:b38a9b0501dc 310
oggonei 4:b38a9b0501dc 311 void borrar()
oggonei 4:b38a9b0501dc 312 {
oggonei 4:b38a9b0501dc 313 int i;
oggonei 4:b38a9b0501dc 314 for(i=0;i<=8;i++)
oggonei 4:b38a9b0501dc 315 {
oggonei 4:b38a9b0501dc 316 sendSPI(0x0+i,0x00);
oggonei 4:b38a9b0501dc 317 }
oggonei 4:b38a9b0501dc 318 };
fabeltranm 0:61199d9d0aed 319
oggonei 5:377b23953ba1 320 void dibujar(char type_fig,char grados, char columna)
oggonei 5:377b23953ba1 321 {
oggonei 5:377b23953ba1 322 //borrar();
oggonei 5:377b23953ba1 323
oggonei 5:377b23953ba1 324 switch (type_fig){
oggonei 5:377b23953ba1 325 case FIG_C: cuadro(columna,grados); break;
oggonei 5:377b23953ba1 326 case FIG_I: linea(columna,grados); break;
oggonei 5:377b23953ba1 327 case FIG_L: ele(columna,grados); break;
oggonei 5:377b23953ba1 328 case FIG_T: te(columna,grados); break;
oggonei 5:377b23953ba1 329 case FIG_S: ese(columna,grados); break;
oggonei 5:377b23953ba1 330
oggonei 5:377b23953ba1 331 };
oggonei 5:377b23953ba1 332
oggonei 5:377b23953ba1 333 }
fabeltranm 0:61199d9d0aed 334
fabeltranm 0:61199d9d0aed 335 int main() {
oggonei 4:b38a9b0501dc 336 sendSPI(0x09,0); //no decodificacion
oggonei 4:b38a9b0501dc 337 sendSPI(0x0A,0x0); //intensidad
oggonei 4:b38a9b0501dc 338 sendSPI(0x0B,0x07); //usa 7 leds
oggonei 4:b38a9b0501dc 339 sendSPI(0x0C,1); //no apaga
oggonei 4:b38a9b0501dc 340 sendSPI(0x0F,0); //operacion normal
oggonei 4:b38a9b0501dc 341
oggonei 5:377b23953ba1 342 int tipo_fig=1,ncolumna=1,grados=1,lee1=0x00,lee2=0x00; // enviar ficha y columna
fabeltranm 0:61199d9d0aed 343
oggonei 5:377b23953ba1 344 while(1){
oggonei 5:377b23953ba1 345 lee1=command.getc();
oggonei 5:377b23953ba1 346 tipo_fig=command.getc();
oggonei 5:377b23953ba1 347 grados=command.getc();
oggonei 5:377b23953ba1 348 ncolumna=command.getc();
oggonei 5:377b23953ba1 349 lee2=command.getc();
oggonei 5:377b23953ba1 350
oggonei 5:377b23953ba1 351 if(lee1==0x3c && lee2==0x3e)
oggonei 5:377b23953ba1 352 {
oggonei 5:377b23953ba1 353 dibujar(tipo_fig,grados,ncolumna);
oggonei 5:377b23953ba1 354 }
oggonei 5:377b23953ba1 355 }
oggonei 5:377b23953ba1 356 }