ystk osw / Mbed 2 deprecated use_bmp_to_matrix

Dependencies:   mbed Adafruit_LEDBackpack LedMatrix8x8Driver

Committer:
osw
Date:
Sun Apr 17 14:11:54 2022 +0000
Revision:
0:77ef58f3a8d5
1st commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
osw 0:77ef58f3a8d5 1 #include "mbed.h"
osw 0:77ef58f3a8d5 2 #include "Adafruit_LEDBackpack.h"
osw 0:77ef58f3a8d5 3 #include "Adafruit_GFX.h"
osw 0:77ef58f3a8d5 4 #include "math.h"
osw 0:77ef58f3a8d5 5
osw 0:77ef58f3a8d5 6 #define SOURCE_FILE0 "/local/f0.bmp"
osw 0:77ef58f3a8d5 7 #define SOURCE_FILE1 "/local/f1.bmp"
osw 0:77ef58f3a8d5 8 #define SOURCE_FILE2 "/local/f2.bmp"
osw 0:77ef58f3a8d5 9 #define SOURCE_FILE3 "local/f3.bmp"
osw 0:77ef58f3a8d5 10 #define BUFFER_SIZE 1024
osw 0:77ef58f3a8d5 11
osw 0:77ef58f3a8d5 12 LocalFileSystem local("local");
osw 0:77ef58f3a8d5 13 I2C i2c(p28,p27);
osw 0:77ef58f3a8d5 14 Adafruit_8x8matrix matrix = Adafruit_8x8matrix(&i2c);
osw 0:77ef58f3a8d5 15
osw 0:77ef58f3a8d5 16 InterruptIn in0(p21);
osw 0:77ef58f3a8d5 17 InterruptIn in1(p22);
osw 0:77ef58f3a8d5 18 InterruptIn in2(p23);
osw 0:77ef58f3a8d5 19 InterruptIn in3(p24);
osw 0:77ef58f3a8d5 20
osw 0:77ef58f3a8d5 21 float lx,ly;
osw 0:77ef58f3a8d5 22
osw 0:77ef58f3a8d5 23 void allclear()
osw 0:77ef58f3a8d5 24 {
osw 0:77ef58f3a8d5 25 for(lx=0; lx<8; lx++) {
osw 0:77ef58f3a8d5 26 for(ly=0; ly<8; ly++) {
osw 0:77ef58f3a8d5 27 matrix.drawPixel(lx,ly,0, 1);
osw 0:77ef58f3a8d5 28 }
osw 0:77ef58f3a8d5 29 }
osw 0:77ef58f3a8d5 30 matrix.writeDisplay();
osw 0:77ef58f3a8d5 31 }
osw 0:77ef58f3a8d5 32
osw 0:77ef58f3a8d5 33 int otob(unsigned char red,unsigned char green,unsigned char blue ){
osw 0:77ef58f3a8d5 34 int d;
osw 0:77ef58f3a8d5 35 int data;
osw 0:77ef58f3a8d5 36 d = (int)red + (int)green + (int)blue;
osw 0:77ef58f3a8d5 37 if(d==0) {
osw 0:77ef58f3a8d5 38 data=1;
osw 0:77ef58f3a8d5 39 } else {
osw 0:77ef58f3a8d5 40 data=0;
osw 0:77ef58f3a8d5 41 }
osw 0:77ef58f3a8d5 42 return data;
osw 0:77ef58f3a8d5 43 }
osw 0:77ef58f3a8d5 44 int btod(int hairetu[8]){
osw 0:77ef58f3a8d5 45 int rtn;
osw 0:77ef58f3a8d5 46 rtn += hairetu[0]*128;
osw 0:77ef58f3a8d5 47 rtn += hairetu[1]*64;
osw 0:77ef58f3a8d5 48 rtn += hairetu[2]*32;
osw 0:77ef58f3a8d5 49 rtn += hairetu[3]*16;
osw 0:77ef58f3a8d5 50 rtn += hairetu[4]*8;
osw 0:77ef58f3a8d5 51 rtn += hairetu[5]*4;
osw 0:77ef58f3a8d5 52 rtn += hairetu[6]*2;
osw 0:77ef58f3a8d5 53 rtn += hairetu[7]*1;
osw 0:77ef58f3a8d5 54 return rtn;
osw 0:77ef58f3a8d5 55 }
osw 0:77ef58f3a8d5 56
osw 0:77ef58f3a8d5 57 //defined variables
osw 0:77ef58f3a8d5 58 /*****************************************************************/
osw 0:77ef58f3a8d5 59 typedef struct bmp_header_st {
osw 0:77ef58f3a8d5 60 unsigned short bfType __attribute__((packed));
osw 0:77ef58f3a8d5 61 unsigned long bfSize __attribute__((packed));
osw 0:77ef58f3a8d5 62 unsigned short bfReserved1 __attribute__((packed));
osw 0:77ef58f3a8d5 63 unsigned short bfReserved2 __attribute__((packed));
osw 0:77ef58f3a8d5 64 unsigned long bfOffBits __attribute__((packed));
osw 0:77ef58f3a8d5 65
osw 0:77ef58f3a8d5 66 unsigned long biSize __attribute__((packed));
osw 0:77ef58f3a8d5 67 long biWidth __attribute__((packed));
osw 0:77ef58f3a8d5 68 long biHeight __attribute__((packed));
osw 0:77ef58f3a8d5 69 unsigned short biPlanes __attribute__((packed));
osw 0:77ef58f3a8d5 70 unsigned short biBitCount __attribute__((packed));
osw 0:77ef58f3a8d5 71 unsigned long biCompression __attribute__((packed));
osw 0:77ef58f3a8d5 72 unsigned long biSizeImage __attribute__((packed));
osw 0:77ef58f3a8d5 73 long biXPixPerMeter __attribute__((packed));
osw 0:77ef58f3a8d5 74 long biYPixPerMeter __attribute__((packed));
osw 0:77ef58f3a8d5 75 unsigned long biClrUsed __attribute__((packed));
osw 0:77ef58f3a8d5 76 unsigned long biCirImportant __attribute__((packed));
osw 0:77ef58f3a8d5 77 } bmp_header;
osw 0:77ef58f3a8d5 78
osw 0:77ef58f3a8d5 79 typedef struct color_palette_st {
osw 0:77ef58f3a8d5 80 unsigned char red;
osw 0:77ef58f3a8d5 81 unsigned char green;
osw 0:77ef58f3a8d5 82 unsigned char blue;
osw 0:77ef58f3a8d5 83 unsigned char dummy;
osw 0:77ef58f3a8d5 84 } color_palette;
osw 0:77ef58f3a8d5 85
osw 0:77ef58f3a8d5 86 unsigned char buffer[ BUFFER_SIZE ];
osw 0:77ef58f3a8d5 87 FILE *fs;
osw 0:77ef58f3a8d5 88 bmp_header bh;
osw 0:77ef58f3a8d5 89 color_palette cp[256];
osw 0:77ef58f3a8d5 90 unsigned long readsize;
osw 0:77ef58f3a8d5 91 unsigned long i;
osw 0:77ef58f3a8d5 92 unsigned long ofset = 0;
osw 0:77ef58f3a8d5 93
osw 0:77ef58f3a8d5 94 int x[24][8];
osw 0:77ef58f3a8d5 95 int *px=&x[0][0];
osw 0:77ef58f3a8d5 96 long a;
osw 0:77ef58f3a8d5 97 int y1[8], y2[8], y3[8], y4[8], y5[8], y6[8], y7[8], y8[8], y9[8], y10[8], y11[8], y12[8];
osw 0:77ef58f3a8d5 98 int y13[8],y14[8],y15[8],y16[8],y17[8],y18[8],y19[8],y20[8],y21[8],y22[8], y23[8], y24[8];
osw 0:77ef58f3a8d5 99 /****************************************************************************************/
osw 0:77ef58f3a8d5 100
osw 0:77ef58f3a8d5 101 int DatatoArray(){
osw 0:77ef58f3a8d5 102 for(int num=0; num<8; num++) {
osw 0:77ef58f3a8d5 103 y1[num]=*(px+24*num); y2[num]=*((px+24*num)+1); y3[num]=*((px+24*num)+2);
osw 0:77ef58f3a8d5 104 y4[num]=*((px+24*num)+3); y5[num]=*((px+24*num)+4); y6[num]=*((px+24*num)+5);
osw 0:77ef58f3a8d5 105 y7[num]=*((px+24*num)+6); y8[num]=*((px+24*num)+7); y9[num]=*((px+24*num)+8);
osw 0:77ef58f3a8d5 106 y10[num]=*((px+24*num)+9); y11[num]=*((px+24*num)+10); y12[num]=*((px+24*num)+11);
osw 0:77ef58f3a8d5 107 y13[num]=*((px+24*num)+12); y14[num]=*((px+24*num)+13); y15[num]=*((px+24*num)+14);
osw 0:77ef58f3a8d5 108 y16[num]=*((px+24*num)+15); y17[num]=*((px+24*num)+16); y18[num]=*((px+24*num)+17);
osw 0:77ef58f3a8d5 109 y19[num]=*((px+24*num)+18); y20[num]=*((px+24*num)+19); y21[num]=*((px+24*num)+20);
osw 0:77ef58f3a8d5 110 y22[num]=*((px+24*num)+21); y23[num]=*((px+24*num)+22); y24[num]=*((px+24*num)+23);
osw 0:77ef58f3a8d5 111 }
osw 0:77ef58f3a8d5 112 }
osw 0:77ef58f3a8d5 113
osw 0:77ef58f3a8d5 114 void kakikaki(){
osw 0:77ef58f3a8d5 115 matrix.begin(0x71); allclear();
osw 0:77ef58f3a8d5 116 for(int count = 0; count<8; count++) {
osw 0:77ef58f3a8d5 117 matrix.drawPixel(count,0,1,y1[count]); matrix.drawPixel(count,1,1,y2[count]);
osw 0:77ef58f3a8d5 118 matrix.drawPixel(count,2,1,y3[count]); matrix.drawPixel(count,3,1,y4[count]);
osw 0:77ef58f3a8d5 119 matrix.drawPixel(count,4,1,y5[count]); matrix.drawPixel(count,5,1,y6[count]);
osw 0:77ef58f3a8d5 120 matrix.drawPixel(count,6,1,y7[count]); matrix.drawPixel(count,7,1,y8[count]);
osw 0:77ef58f3a8d5 121 }
osw 0:77ef58f3a8d5 122 matrix.writeDisplay(); wait_ms(250); matrix.clear();
osw 0:77ef58f3a8d5 123
osw 0:77ef58f3a8d5 124 matrix.begin(0x72); allclear();
osw 0:77ef58f3a8d5 125 for(int count = 0; count<8; count++) {
osw 0:77ef58f3a8d5 126 matrix.drawPixel(count,0,1,y9[count]); matrix.drawPixel(count,1,1,y10[count]);
osw 0:77ef58f3a8d5 127 matrix.drawPixel(count,2,1,y11[count]); matrix.drawPixel(count,3,1,y12[count]);
osw 0:77ef58f3a8d5 128 matrix.drawPixel(count,4,1,y13[count]); matrix.drawPixel(count,5,1,y14[count]);
osw 0:77ef58f3a8d5 129 matrix.drawPixel(count,6,1,y15[count]); matrix.drawPixel(count,7,1,y16[count]);
osw 0:77ef58f3a8d5 130 }
osw 0:77ef58f3a8d5 131 matrix.writeDisplay(); wait_ms(250); matrix.clear();
osw 0:77ef58f3a8d5 132
osw 0:77ef58f3a8d5 133 matrix.begin(0x74); allclear();
osw 0:77ef58f3a8d5 134 for(int count = 0; count<8; count++) {
osw 0:77ef58f3a8d5 135 matrix.drawPixel(count,0,1,y17[count]); matrix.drawPixel(count,1,1,y18[count]);
osw 0:77ef58f3a8d5 136 matrix.drawPixel(count,2,1,y19[count]); matrix.drawPixel(count,3,1,y20[count]);
osw 0:77ef58f3a8d5 137 matrix.drawPixel(count,4,1,y21[count]); matrix.drawPixel(count,5,1,y22[count]);
osw 0:77ef58f3a8d5 138 matrix.drawPixel(count,6,1,y23[count]); matrix.drawPixel(count,7,1,y24[count]);
osw 0:77ef58f3a8d5 139 }
osw 0:77ef58f3a8d5 140 matrix.writeDisplay(); wait_ms(250); matrix.clear();
osw 0:77ef58f3a8d5 141 }
osw 0:77ef58f3a8d5 142
osw 0:77ef58f3a8d5 143 int HiperRead0(){
osw 0:77ef58f3a8d5 144 if ( NULL == (fs = fopen( SOURCE_FILE0, "rb" )) ) {
osw 0:77ef58f3a8d5 145 printf( "file open error when oening file \"%s\"\r\n", SOURCE_FILE0 );
osw 0:77ef58f3a8d5 146 return ( 1 );
osw 0:77ef58f3a8d5 147 }
osw 0:77ef58f3a8d5 148 fread( &bh, sizeof( bh ), 1, fs );
osw 0:77ef58f3a8d5 149
osw 0:77ef58f3a8d5 150 for(i = 0; i < 256; i++) { fread( &(cp[i]), sizeof( color_palette ), 1, fs ); }
osw 0:77ef58f3a8d5 151
osw 0:77ef58f3a8d5 152 while ( 0 != (readsize = fread( buffer, sizeof( unsigned char ), BUFFER_SIZE, fs)) ) {
osw 0:77ef58f3a8d5 153 int data[readsize];
osw 0:77ef58f3a8d5 154 printf("%ld\r\n",readsize);
osw 0:77ef58f3a8d5 155 for ( i = 0; i < readsize; i++ ) {
osw 0:77ef58f3a8d5 156 data[i] = otob( cp[ buffer[i] ].red, cp[ buffer[i] ].green, cp[ buffer[i] ].blue);
osw 0:77ef58f3a8d5 157 ofset++;
osw 0:77ef58f3a8d5 158 }
osw 0:77ef58f3a8d5 159 for(int size=0; size<readsize/8; size++) {
osw 0:77ef58f3a8d5 160 int b=8*size;
osw 0:77ef58f3a8d5 161 for(a = b; a<(b+8); a++) { x[size][a-b] = data[a]; }
osw 0:77ef58f3a8d5 162 }
osw 0:77ef58f3a8d5 163 for(int g=0; g<readsize; g++) {
osw 0:77ef58f3a8d5 164 printf("%d",*(px+g));
osw 0:77ef58f3a8d5 165 if( ((g+1)%24) ==0 && g!=0) { printf("\r\n"); }
osw 0:77ef58f3a8d5 166 }
osw 0:77ef58f3a8d5 167 }
osw 0:77ef58f3a8d5 168 printf( "\r\ndone.\r\n\r\n" ); fclose(fs);
osw 0:77ef58f3a8d5 169
osw 0:77ef58f3a8d5 170 DatatoArray(); kakikaki();
osw 0:77ef58f3a8d5 171 return 0;
osw 0:77ef58f3a8d5 172 }
osw 0:77ef58f3a8d5 173
osw 0:77ef58f3a8d5 174 int HiperRead1(){
osw 0:77ef58f3a8d5 175 if ( NULL == (fs = fopen( SOURCE_FILE1, "rb" )) ) {
osw 0:77ef58f3a8d5 176 printf( "file open error when oening file \"%s\"\r\n", SOURCE_FILE1 );
osw 0:77ef58f3a8d5 177 return ( 1 );
osw 0:77ef58f3a8d5 178 }
osw 0:77ef58f3a8d5 179 fread( &bh, sizeof( bh ), 1, fs );
osw 0:77ef58f3a8d5 180
osw 0:77ef58f3a8d5 181 for(i = 0; i < 256; i++) { fread( &(cp[i]), sizeof( color_palette ), 1, fs ); }
osw 0:77ef58f3a8d5 182
osw 0:77ef58f3a8d5 183 while ( 0 != (readsize = fread( buffer, sizeof( unsigned char ), BUFFER_SIZE, fs)) ) {
osw 0:77ef58f3a8d5 184 int data[readsize];
osw 0:77ef58f3a8d5 185 printf("%ld\r\n",readsize);
osw 0:77ef58f3a8d5 186 for ( i = 0; i < readsize; i++ ) {
osw 0:77ef58f3a8d5 187 data[i] = otob( cp[ buffer[i] ].red, cp[ buffer[i] ].green, cp[ buffer[i] ].blue);
osw 0:77ef58f3a8d5 188 ofset++;
osw 0:77ef58f3a8d5 189 }
osw 0:77ef58f3a8d5 190 for(int size=0; size<readsize/8; size++) {
osw 0:77ef58f3a8d5 191 int b=8*size;
osw 0:77ef58f3a8d5 192 for( a = b; a<(b+8); a++ ){ x[size][a-b] = data[a]; }
osw 0:77ef58f3a8d5 193 }
osw 0:77ef58f3a8d5 194 for(int g=0; g<readsize; g++) {
osw 0:77ef58f3a8d5 195 printf("%d",*(px+g));
osw 0:77ef58f3a8d5 196 if( ((g+1)%24) ==0 && g!=0 ){ printf("\r\n"); }
osw 0:77ef58f3a8d5 197 }
osw 0:77ef58f3a8d5 198 }
osw 0:77ef58f3a8d5 199 printf( "\r\ndone.\r\n\r\n" ); fclose(fs);
osw 0:77ef58f3a8d5 200
osw 0:77ef58f3a8d5 201 DatatoArray(); kakikaki();
osw 0:77ef58f3a8d5 202 return 0;
osw 0:77ef58f3a8d5 203 }
osw 0:77ef58f3a8d5 204
osw 0:77ef58f3a8d5 205 int HiperRead2(){
osw 0:77ef58f3a8d5 206 if ( NULL == (fs = fopen( SOURCE_FILE2, "rb" )) ) {
osw 0:77ef58f3a8d5 207 printf( "file open error when oening file \"%s\"\r\n", SOURCE_FILE2 );
osw 0:77ef58f3a8d5 208 return ( 1 );
osw 0:77ef58f3a8d5 209 }
osw 0:77ef58f3a8d5 210 fread( &bh, sizeof( bh ), 1, fs );
osw 0:77ef58f3a8d5 211
osw 0:77ef58f3a8d5 212 for(i = 0; i < 256; i++) { fread( &(cp[i]), sizeof( color_palette ), 1, fs ); }
osw 0:77ef58f3a8d5 213
osw 0:77ef58f3a8d5 214 while ( 0 != (readsize = fread( buffer, sizeof( unsigned char ), BUFFER_SIZE, fs)) ) {
osw 0:77ef58f3a8d5 215 int data[readsize];
osw 0:77ef58f3a8d5 216 printf("%ld\r\n",readsize);
osw 0:77ef58f3a8d5 217 for ( i = 0; i < readsize; i++ ) {
osw 0:77ef58f3a8d5 218 data[i] = otob( cp[ buffer[i] ].red, cp[ buffer[i] ].green, cp[ buffer[i] ].blue);
osw 0:77ef58f3a8d5 219 ofset++;
osw 0:77ef58f3a8d5 220 }
osw 0:77ef58f3a8d5 221 for(int size=0; size<readsize/8; size++) {
osw 0:77ef58f3a8d5 222 int b=8*size;
osw 0:77ef58f3a8d5 223 for(a = b; a<(b+8); a++) { x[size][a-b] = data[a]; }
osw 0:77ef58f3a8d5 224 }
osw 0:77ef58f3a8d5 225 for(int g=0; g<readsize; g++) {
osw 0:77ef58f3a8d5 226 printf("%d",*(px+g));
osw 0:77ef58f3a8d5 227 if( ((g+1)%24) ==0 && g!=0) { printf("\r\n"); }
osw 0:77ef58f3a8d5 228 }
osw 0:77ef58f3a8d5 229 }
osw 0:77ef58f3a8d5 230 printf( "\r\ndone.\r\n\r\n" ); fclose(fs);
osw 0:77ef58f3a8d5 231
osw 0:77ef58f3a8d5 232 DatatoArray(); kakikaki();
osw 0:77ef58f3a8d5 233 return 0;
osw 0:77ef58f3a8d5 234 }
osw 0:77ef58f3a8d5 235
osw 0:77ef58f3a8d5 236 int HiperRead3(){
osw 0:77ef58f3a8d5 237 if ( NULL == (fs = fopen( SOURCE_FILE3, "rb" )) ) {
osw 0:77ef58f3a8d5 238 printf( "file open error when oening file \"%s\"\r\n", SOURCE_FILE3 );
osw 0:77ef58f3a8d5 239 return ( 1 );
osw 0:77ef58f3a8d5 240 }
osw 0:77ef58f3a8d5 241 fread( &bh, sizeof( bh ), 1, fs );
osw 0:77ef58f3a8d5 242
osw 0:77ef58f3a8d5 243 for(i = 0; i < 256; i++) { fread( &(cp[i]), sizeof( color_palette ), 1, fs ); }
osw 0:77ef58f3a8d5 244
osw 0:77ef58f3a8d5 245 while ( 0 != (readsize = fread( buffer, sizeof( unsigned char ), BUFFER_SIZE, fs)) ) {
osw 0:77ef58f3a8d5 246 int data[readsize];
osw 0:77ef58f3a8d5 247 printf("%ld\r\n",readsize);
osw 0:77ef58f3a8d5 248 for ( i = 0; i < readsize; i++ ) {
osw 0:77ef58f3a8d5 249 data[i] = otob( cp[ buffer[i] ].red, cp[ buffer[i] ].green, cp[ buffer[i] ].blue);
osw 0:77ef58f3a8d5 250 ofset++;
osw 0:77ef58f3a8d5 251 }
osw 0:77ef58f3a8d5 252 for(int size=0; size<readsize/8; size++) {
osw 0:77ef58f3a8d5 253 int b=8*size;
osw 0:77ef58f3a8d5 254 for(a = b; a<(b+8); a++) { x[size][a-b] = data[a]; }
osw 0:77ef58f3a8d5 255 }
osw 0:77ef58f3a8d5 256 for(int g=0; g<readsize; g++) {
osw 0:77ef58f3a8d5 257 printf("%d",*(px+g));
osw 0:77ef58f3a8d5 258 if( ((g+1)%24) ==0 && g!=0) { printf("\r\n"); }
osw 0:77ef58f3a8d5 259 }
osw 0:77ef58f3a8d5 260 }
osw 0:77ef58f3a8d5 261 printf( "\r\ndone.\r\n\r\n" ); fclose(fs);
osw 0:77ef58f3a8d5 262
osw 0:77ef58f3a8d5 263 DatatoArray(); kakikaki();
osw 0:77ef58f3a8d5 264 return 0;
osw 0:77ef58f3a8d5 265 }
osw 0:77ef58f3a8d5 266
osw 0:77ef58f3a8d5 267 void rin0(){ HiperRead0(); }
osw 0:77ef58f3a8d5 268 void rin1(){ HiperRead1(); }
osw 0:77ef58f3a8d5 269 void rin2(){ HiperRead2(); }
osw 0:77ef58f3a8d5 270 void rin3(){ HiperRead3(); }
osw 0:77ef58f3a8d5 271
osw 0:77ef58f3a8d5 272 int main(){
osw 0:77ef58f3a8d5 273 in0.rise(&rin0); in1.rise(&rin1); in2.rise(&rin2); in3.rise(&rin3);
osw 0:77ef58f3a8d5 274
osw 0:77ef58f3a8d5 275 while(1){
osw 0:77ef58f3a8d5 276 printf("waiting\r\n");
osw 0:77ef58f3a8d5 277 wait(10);
osw 0:77ef58f3a8d5 278 }
osw 0:77ef58f3a8d5 279 }