dotmatrixLED animation with ht1632 LED driver.

Dependencies:   SDFileSystem mbed

Revision:
0:62dc51c731b4
Child:
1:0c055badeb8f
--- /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);
+            
+        }
+    }
+}