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.
Fork of 00_LAB_matrix8x8_SPI by
Revision 7:315c0b5f9425, committed 2018-09-07
- Comitter:
- oggonei
- Date:
- Fri Sep 07 12:59:13 2018 +0000
- Parent:
- 5:377b23953ba1
- Commit message:
- tetris
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 377b23953ba1 -r 315c0b5f9425 main.cpp --- a/main.cpp Thu Sep 06 14:22:35 2018 +0000 +++ b/main.cpp Fri Sep 07 12:59:13 2018 +0000 @@ -1,5 +1,6 @@ #include "mbed.h" + SPI deviceM(PB_5, PB_4, PB_3); DigitalOut ssel (PB_9); Serial command(USBTX,USBRX); @@ -9,37 +10,6 @@ #define FIG_L 0x03 #define FIG_T 0x04 #define FIG_S 0x05 - -//#define uint8_t unsigned char -//uint8_t vcol2[8]={0,0,0,0,0,0,0,0}; - -int enviarficha(int x,int y) -{ - int k=y; - - if(x==1) // cuadrado - { - return k; - } - else if (x==2) //linea - { - return k; - } - else if (x==3) //ele - { - return k; - } - else if (x==4) //te - { - return k; - } - else if (x==5) //ese - { - return k; - } - else - return 1; -} void sendSPI(uint8_t d1, uint8_t d2) { @@ -61,75 +31,62 @@ void cuadro(int x,int y) { - int j,r; - - if (x==1) - r=0xC0; - else if(x==2) - r=0x60; - else if(x==3) - r=0x30; - else if(x==4) - r=0x18; - else if(x==5) - r=0xC; - else if(x==6) - r=0x06; - else if(x==7) - r=0x03; - else if(x==8) - r=0x01; + int j; + int cu[8]={0xC0,0x60,0x30,0x18,0xc,0x6,0x3,0x1}; + switch(y) { - for(j=0;j<=7;j++) - { - sendSPI(0x0+j,r); - sendSPI(0x0+(j+1),r); - wait_ms(200); - sendSPI(0x0+j,0x00); - sendSPI(0x0+(j+1),0x00); - wait_us(10); - } - sendSPI(0x07,r); - sendSPI(0x08,r); + case 1: case1: + for(j=0;j<=7;j++) + { + sendSPI(0x0+j,cu[x-1]); + sendSPI(0x0+(j+1),cu[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + wait_us(10); + } + sendSPI(0x07,cu[x-1]); + sendSPI(0x08,cu[x-1]); + break; + case 2: goto case1; + case 3: goto case1; + case 4: goto case1; } }; void linea(int x,int y) { - int j,r=y; + int j; int lin0[8]={0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1}; - int lin90[8]={0xe0,0x70,0x38,0x1c,0x56,0x6f,0x6f,0x6f}; + int lin90[8]={0b11100000,0b01110000,0b00111000,0b00011100,0b00001110,0b00000111,0b00000111,0b00000111}; { - switch (r){ - case 1: for(j=0;j<=6;j++) + switch (y){ + case 1: case1: for(j=0;j<=6;j++) { - sendSPI(0x0+j,lin0[x]); - sendSPI(0x0+(j+1),lin0[x]); - sendSPI(0x0+(j+2),lin0[x]); + sendSPI(0x0+j,lin0[x-1]); + sendSPI(0x0+(j+1),lin0[x-1]); + sendSPI(0x0+(j+2),lin0[x-1]); wait_ms(200); sendSPI(0x0+j,0x00); sendSPI(0x0+(j+1),0x00); sendSPI(0x0+(j+2),0x00); wait_us(10); } - sendSPI(0x06,lin0[x]); - sendSPI(0x07,lin0[x]); - sendSPI(0x08,lin0[x]); + sendSPI(0x06,lin0[x-1]); + sendSPI(0x07,lin0[x-1]); + sendSPI(0x08,lin0[x-1]); break; - case 2: - for(j=0;j<=6;j++) + case 2: case2: for(j=0;j<=7;j++) { - sendSPI(0x0+j,lin90[x]); + sendSPI(0x0+j,lin90[x-1]); wait_ms(200); sendSPI(0x0+j,0x00); wait_us(10); } - sendSPI(0x06,lin90[x]); - sendSPI(0x07,lin90[x]); - sendSPI(0x08,lin90[x]); + sendSPI(0x08,lin90[x-1]); break; - //case 3: ele(columna,grados); break; - //case 4: te(columna,grados); break; + case 3: goto case1; + case 4: goto case2; } } @@ -137,174 +94,195 @@ void ele(int x,int y) { - int j,r,r2; - if (x==1) - { - r=0xC0; - r2=0x80; - } - else if(x==2) - { - r=0x60; - r2=0x40; - } - else if(x==3) - { - r=0x30; - r2=0x20; - } - else if(x==4) - { - r=0x18; - r2=0x10; - } - else if(x==5) + int j; + int ele10[8]={0xc0,0x60,0x30,0x18,0xc,0x06,0x03,0x01}; + int ele20[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; + int ele190[8]={0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001,0x00,0x00}; + int ele290[8]={0b11100000,0b01110000,0b00111000,0b00011100,0b00001110,0b00000111,0b00000011,0b00000001}; + int ele1180[8]={0b11000000,0b01100000,0b00110000,0b00011000,0b00001100,0b00000110,0b00000011,0b00000001}; + int ele2180[8]={0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001,0b00000000}; + int ele1270[8]={0b11100000,0b01110000,0b00111000,0b00011100,0b00001110,0b00000111,0b00000011,0b00000001}; + int ele2270[8]={0b10000000,0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001}; + switch(y) { - r=0xC; - r2=0x08; - } - else if(x==6) - { - r=0x06; - r2=0x04; - } - else if(x==7) - { - r=0x03; - r2=0x02; - } - else if(x==8) - { - r=0x01; - r2=0x01; - } - { - for(j=0;j<=6;j++) + case 1: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ele20[x-1]); + sendSPI(0x0+(j+1),ele20[x-1]); + sendSPI(0x0+(j+2),ele10[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + sendSPI(0x0+(j+2),0x00); + wait_us(10); + } + sendSPI(0x06,ele20[x-1]); + sendSPI(0x07,ele20[x-1]); + sendSPI(0x08,ele10[x-1]); + break; + case 2: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ele190[x-1]); + sendSPI(0x0+(j+1),ele290[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + wait_us(10); + } + sendSPI(0x07,ele190[x-1]); + sendSPI(0x08,ele290[x-1]); + break; + case 3: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ele1180[x-1]); + sendSPI(0x0+(j+1),ele2180[x-1]); + sendSPI(0x0+(j+2),ele2180[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + sendSPI(0x0+(j+2),0x00); + wait_us(10); + } + sendSPI(0x06,ele1180[x-1]); + sendSPI(0x07,ele2180[x-1]); + sendSPI(0x08,ele2180[x-1]); + break; + case 4: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ele1270[x-1]); + sendSPI(0x0+(j+1),ele2270[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + wait_us(10); + } + sendSPI(0x07,ele1270[x-1]); + sendSPI(0x08,ele2270[x-1]); + break; + } +}; + +void te(int x,int y) +{ + int te10[8]={0x40,0x20,0x10,0x8,0x4,0x2,0x1,0x01}; + int te20[8]={0xe0,0x70,0x38,0x1c,0xe,0x7,0x03,0x01}; + int te190[8]={0b10000000,0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001}; + int te290[8]={0b11000000,0b01100000,0b00110000,0b00011000,0b00001100,0b00000110,0b00000011,0b00000001}; + int te1180[8]={0b11100000,0b01110000,0b00111000,0b00011100,0b00001110,0b00000111,0b00000011,0b00000001}; + int te2180[8]={0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001,0b00000000}; + int te1270[8]={0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001,0b00000000}; + int te2270[8]={0b11000000,0b01100000,0b00110000,0b00011000,0b00001100,0b00000110,0b00000011,0b00000001}; + int j; + + switch(y) + { + case 1: + for(j=0;j<=7;j++) { - sendSPI(0x0+j,r2); - sendSPI(0x0+(j+1),r2); - sendSPI(0x0+(j+2),r); + sendSPI(0x0+j,te10[x-1]); + sendSPI(0x0+(j+1),te20[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + wait_us(10); + } + sendSPI(0x07,te10[x-1]); + sendSPI(0x08,te20[x-1]); + break; + case 2: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,te190[x-1]); + sendSPI(0x0+(j+1),te290[x-1]); + sendSPI(0x0+(j+2),te190[x-1]); wait_ms(200); sendSPI(0x0+j,0x00); sendSPI(0x0+(j+1),0x00); sendSPI(0x0+(j+2),0x00); wait_us(10); } - sendSPI(0x06,r2); - sendSPI(0x07,r2); - sendSPI(0x08,r); - } + sendSPI(0x06,te190[x-1]); + sendSPI(0x07,te290[x-1]); + sendSPI(0x08,te190[x-1]); + break; + case 3: + for(j=0;j<=7;j++) + { + sendSPI(0x0+j,te1180[x-1]); + sendSPI(0x0+(j+1),te2180[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + sendSPI(0x0+(j+2),0x00); + wait_us(10); + } + sendSPI(0x07,te1180[x-1]); + sendSPI(0x08,te2180[x-1]); + break; + case 4: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,te1270[x-1]); + sendSPI(0x0+(j+1),te2270[x-1]); + sendSPI(0x0+(j+2),te1270[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + sendSPI(0x0+(j+2),0x00); + wait_us(10); + } + sendSPI(0x06,te1270[x-1]); + sendSPI(0x07,te2270[x-1]); + sendSPI(0x08,te1270[x-1]); + break; + } }; -void te(int x,int y) +void ese(int x,int y) { - int j,r,r2; - - if (x==1) - { - r=0xE0; - r2=0x40; - } - else if(x==2) - { - r=0x70; - r2=0x20; - } - else if(x==3) - { - r=0x38; - r2=0x10; - } - else if(x==4) + int ese10[8]={0x60,0x30,0x18,0xc,0x6,0x3,0x1,0x0}; + int ese20[8]={0xc0,0x60,0x30,0x18,0xc,0x6,0x3,0x01}; + int ese190[8]={0b10000000,0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0x01}; + int ese290[8]={0b11000000,0b01100000,0b00110000,0b00011000,0b00001100,0b00000110,0b00000011,0x01}; + int ese390[8]={0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001,0x00}; + + int j; + switch(y) { - r=0x1C; - r2=0x8; - } - else if(x==5) - { - r=0xE; - r2=0x4; - } - else if(x==6) - { - r=0x7; - r2=0x2; - } - else if(x==7) - { - r=0x03; - r2=0x1; - } - else if(x==8) - r=0x01; - { - for(j=0;j<=7;j++) - { - sendSPI(0x0+j,r2); - sendSPI(0x0+(j+1),r); + case 1: case1: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ese10[x-1]); + sendSPI(0x0+(j+1),ese20[x-1]); wait_ms(200); sendSPI(0x0+j,0x00); sendSPI(0x0+(j+1),0x00); wait_us(10); - } - sendSPI(0x07,r2); - sendSPI(0x08,r); - } -}; - -void ese(int x,int y) -{ - int j,r,r2; - - if (x==1) - { - r=0xC0; - r2=0x60; - } - else if(x==2) - { - r=0x60; - r2=0x30; - } - else if(x==3) - { - r=0x30; - r2=0x18; - } - else if(x==4) - { - r=0x18; - r2=0xC; - } - else if(x==5) - { - r=0xC; - r2=0x6; - } - else if(x==6) - { - r=0x6; - r2=0x3; - } - else if(x==7) - { - r=0x03; - r2=0x1; - } - else if(x==8) - r=0x01; - { - for(j=0;j<=7;j++) - { - sendSPI(0x0+j,r2); - sendSPI(0x0+(j+1),r); + } + sendSPI(0x07,ese10[x-1]); + sendSPI(0x08,ese20[x-1]); + break; + case 2: case2: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ese190[x-1]); + sendSPI(0x0+(j+1),ese290[x-1]); + sendSPI(0x0+(j+2),ese390[x-1]); wait_ms(200); sendSPI(0x0+j,0x00); sendSPI(0x0+(j+1),0x00); wait_us(10); - } - sendSPI(0x07,r2); - sendSPI(0x08,r); + } + sendSPI(0x06,ese190[x-1]); + sendSPI(0x07,ese290[x-1]); + sendSPI(0x08,ese390[x-1]); + break; + case 3: goto case1; + case 4: goto case2; } }; @@ -317,7 +295,7 @@ } }; -void dibujar(char type_fig,char grados, char columna) +void dibujar(int type_fig,int grados, int columna) { //borrar(); @@ -350,7 +328,7 @@ if(lee1==0x3c && lee2==0x3e) { - dibujar(tipo_fig,grados,ncolumna); + dibujar(tipo_fig,grados,ncolumna); } } } \ No newline at end of file