dotmatrixLED animation with ht1632 LED driver.
Dependencies: SDFileSystem mbed
Diff: main.cpp
- Revision:
- 0:62dc51c731b4
- Child:
- 1:0c055badeb8f
diff -r 000000000000 -r 62dc51c731b4 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Aug 22 04:57:19 2015 +0000 @@ -0,0 +1,97 @@ +#include "mbed.h" +#include "ht1632.h" + +#include "SDFileSystem.h" +#define SD_MOSI dp2 +#define SD_MISO dp1 +#define SD_SCLK dp6 +#define SD_CS dp13 +SDFileSystem sd(SD_MOSI, SD_MISO, SD_SCLK, SD_CS, "sd"); // mosi, miso, sclk, cs, name (HW modification candidate) + +DigitalOut myled(LED1); + +void bmpDisp( FILE *fp ) +{ + unsigned char data[32]; + unsigned char *gData =&data[0],*rData=&data[8],*bData=&data[16]; + + fseek(fp, 54 , SEEK_SET);//bitmap headder throw + for( int j = 7 ; j>=0 ; j-- ) + { + rData[j] = 0; + gData[j] = 0; + bData[j] = 0; + for( int i=0 ; i<8 ; i++ ) + { + bData[j] = bData[j] <<1; + if ( fgetc(fp) > 127 ) + bData[j] = bData[j] | 0x01; + + gData[j] = gData[j]<<1; + if ( fgetc(fp) > 127 ) + gData[j] |= 0x01; + + rData[j] = rData[j]<<1; + if ( fgetc(fp) > 127 ) + rData[j] |= 0x01; + + } + } + sendData( 0 , data , sizeof(data) ); +} + + +int main() { + + myled = 0; + FILE *fp; + initHt1632(); + unsigned char data[32]; + for( int i=0 ; i< sizeof(data) ; i++ ) + data[i] = (unsigned char)0; + + int color = 8*2; + for( int i=0 ; i< 8 ; i++ ) + { + data[i+color] = i*2; + data[i+color] = data[i+color] | (unsigned char)(i*2+1)<<4; + data[i+color] = data[i+color]; + } + sendData( 0 , data , sizeof(data) ); + + char filePath[256] = ""; + + for( int fileNum = 1 ; fileNum <100 ; fileNum++ ) + { + sprintf( filePath , "/sd/%02d.bmp" , fileNum ); + + if( ( fp = fopen(filePath, "r") ) == NULL ) + { + break; + } + else + { + myled = 1; + + bmpDisp( fp ); + fclose( fp ); + free( fp ); + wait(0.1); + + } + } + + + + while(1) { + + for( int i =0 ; i<16 ; i++ ) + { + myled = 1; + wait(0.5); + myled = 0; + wait(0.5); + + } + } +}