dotmatrixLED animation with ht1632 LED driver.

Dependencies:   SDFileSystem mbed

main.cpp

Committer:
kohacraft
Date:
2015-08-22
Revision:
0:62dc51c731b4
Child:
1:0c055badeb8f

File content as of revision 0:62dc51c731b4:

#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);
            
        }
    }
}