dotmatrixLED animation with ht1632 LED driver.
Dependencies: SDFileSystem mbed
main.cpp
- Committer:
- kohacraft
- Date:
- 2015-08-23
- Revision:
- 2:f28ec2298aa6
- Parent:
- 1:0c055badeb8f
File content as of revision 2:f28ec2298aa6:
#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; int fileNumMax = 100; float waitTime = 0.1; //LEDモジュールの初期化 initHt1632(); //表示のwait時間を読み込み if( ( fp = fopen("/sd/loop.txt", "r") ) != NULL ) { fscanf( fp, "%d,%f" , &fileNumMax , &waitTime ); fclose(fp); free(fp); } else { fileNumMax = 99; waitTime = 0.1; } myled = 1; //01.bmpから99.bmpまでを表示を繰り返す char filePath[256] = ""; while(1) { for( int fileNum = 1 ; fileNum <= fileNumMax ; fileNum++ ) { sprintf( filePath , "/sd/%02d.bmp" , fileNum ); if( ( fp = fopen(filePath, "r") ) == NULL ) { free( fp ); break; } else { myled = ~myled; bmpDisp( fp ); fclose( fp ); free( fp ); wait(waitTime); } } } }