Toyomasa Watarai / Mbed 2 deprecated LEDMatrix_Master

Dependencies:   mbed

Fork of LEDMatrix_Master by en 129

Revision:
0:64f46cf1b2b4
Child:
1:d4d1951a4202
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Oct 07 14:19:46 2013 +0000
@@ -0,0 +1,186 @@
+#pragma import __use_all_ctype
+
+#include "mbed.h"
+#include <string.h>
+#include "kfont8.h"
+#include "process_fonts.h"
+
+SPI spi(p5, p6, p7); // mosi, miso, sclk
+BusOut bords(p15,p16,p17,p18,p19,p20);
+Serial pc(USBTX, USBRX); // tx, rx
+
+unsigned int ImageBuf[3][16*9];//16*6
+
+void SPILineOut(unsigned char setLine)
+{
+    unsigned int data[3]={0};
+    unsigned int i = 0;
+    for(i=0;i<=5;i++)
+    {
+        data[0] |= ((ImageBuf[2][setLine]>>(15-i))&0x01) << (15-(3*i));
+    }
+    for(i=0;i<=4;i++)
+    {
+        data[0] |= ((ImageBuf[1][setLine]>>(15-i))&0x01) << (14-(3*i));
+        data[0] |= ((ImageBuf[0][setLine]>>(15-i))&0x01) << (13-(3*i));
+    }
+
+    for(i=0;i<=5;i++)
+    {
+        data[1] |= ((ImageBuf[1][setLine]>>(10-i))&0x01) << (15-(3*i));
+    }
+    for(i=0;i<=4;i++)
+    {
+        data[1] |= ((ImageBuf[0][setLine]>>(10-i))&0x01) << (14-(3*i));
+        data[1] |= ((ImageBuf[2][setLine]>>(9-i))&0x01) << (13-(3*i));
+    }
+
+    for(i=0;i<=5;i++)
+    {
+        data[2] |= ((ImageBuf[0][setLine]>>(5-i))&0x01) << (15-(3*i));
+    }
+    for(i=0;i<=4;i++)
+    {
+        data[2] |= ((ImageBuf[2][setLine]>>(4-i))&0x01) << (14-(3*i));
+        data[2] |= ((ImageBuf[1][setLine]>>(4-i))&0x01) << (13-(3*i));
+    }
+    spi.write(data[0]);
+    spi.write(data[1]);
+    spi.write(data[2]);
+}
+
+void outBordData(unsigned char ch)
+{
+    unsigned int i = 0;
+    wait_us(10);
+    bords = 0x01 << ch;
+    for(i=(ch*16);i<(ch*16+16);i++)
+    {
+        SPILineOut(i);
+    }
+}
+
+void bufLeftShift(void)
+{  
+    signed int i = 0;
+
+    for(i=95;i>=0;i--)
+    {
+        ImageBuf[0][i+1] = ImageBuf[0][i];
+        ImageBuf[1][i+1] = ImageBuf[1][i];
+        ImageBuf[2][i+1] = ImageBuf[2][i];
+    }
+    ImageBuf[0][0] = ImageBuf[0][96];
+    ImageBuf[1][0] = ImageBuf[1][96];
+    ImageBuf[2][0] = ImageBuf[2][96];
+}
+
+int main()
+{
+    unsigned char f_mode = 0;
+    unsigned int i = 0;
+    unsigned char coler = 0;
+//    char strs[100]={0x82,0x6d,0x82,0x73,0x8b,0xe0,0x91,0xf2,0x82,0x51,0x82,0x4f,0x82,0x50,0x82,0x52};
+    char strs[100]={0x82,0xE6,0x82,0xA4,0x82,0xB1,0x82,0xBB,0x82,0x8D,0x82,0x82,0x82,0x85,0x82,0x84,
+                    0x8D,0xD5,0x82,0xE8,0x82,0xD6,0x81,0x49};
+
+    spi.format(16,1);
+    spi.frequency(1000000);
+
+    memset(ImageBuf,0,sizeof(ImageBuf));
+    f_mode = 1;
+    i=0;
+    wait(3);
+
+    while(1)
+    {
+        if(f_mode == 0)
+        {
+            memset(ImageBuf,0,sizeof(ImageBuf));
+            pc.scanf("%s",&strs);
+            pc.printf("cmdOK\r\n");
+            if(strstr(strs,"barusu") != NULL)
+            {
+                memset(ImageBuf,0xffff,sizeof(ImageBuf));
+                f_mode = 2;
+            }
+            else
+            {
+                f_mode = 1;
+            }
+        }
+        if(f_mode == 1)
+        {
+            drawStr(strs,coler,i,4);
+            i++;
+            if(i > (16*6 - 8 ))
+            {
+                f_mode = 2;
+                coler = (coler+1)%7;
+                i = 0;
+            }
+        }
+        if(f_mode == 2)
+        {
+            bufLeftShift();
+            i++;
+            if(i>=((16*6 - 8)*3))
+            {
+                memset(ImageBuf,0,sizeof(ImageBuf));
+                i = 0;
+                f_mode = 1;
+            }
+        }
+
+        if(pc.readable()) {
+            f_mode = 0;
+        }
+        outBordData(0);
+        outBordData(1);
+        outBordData(2);
+        outBordData(3);
+        outBordData(4);
+        outBordData(5);
+        wait(0.1);
+    }
+    
+//////////////////////////////////////////////
+//          test mode
+//////////////////////////////////////////////
+/*
+    while(0)//test mode
+    {
+        for(i=0;i<32;i++)
+        {
+            ImageBuf[0][i] = 0x0000;
+            ImageBuf[1][i] = 0;
+            ImageBuf[2][i] = 0;
+        }
+        cs0 = 1;
+        cs1 = 0;
+        for(i=0;i<16;i++)
+        {
+            SPILineOut(i);
+        }
+        cs0 = 0;
+        cs1 = 1;
+        for(i=16;i<32;i++)
+        {
+            SPILineOut(i);
+        }
+
+        cs0 = 1;
+        cs1 = 0;
+        for(i=0;i<16;i++)
+        {
+            SPILineOut(i);
+        }
+        cs0 = 0;
+        cs1 = 1;
+        for(i=16;i<32;i++)
+        {
+            SPILineOut(i);
+        }
+    }
+*/
+}