LEDMatrixDisplay Program 文字ごとに色を変更できるように修正
Fork of LEDMatrix_Master by
main.cpp
- Committer:
- nameless129
- Date:
- 2013-10-07
- Revision:
- 0:64f46cf1b2b4
- Child:
- 1:d4d1951a4202
File content as of revision 0:64f46cf1b2b4:
#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); } } */ }