LEDMatrixDisplay Program 文字ごとに色を変更できるように修正

Dependencies:   mbed

Fork of LEDMatrix_Master by en 129

Committer:
nameless129
Date:
Sat Nov 16 06:21:49 2013 +0000
Revision:
5:6ff934d885d2
Parent:
4:70a1803901d1
Child:
8:b24bd32cd2ed
???????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nameless129 0:64f46cf1b2b4 1 #pragma import __use_all_ctype
nameless129 0:64f46cf1b2b4 2
nameless129 0:64f46cf1b2b4 3 #include "mbed.h"
nameless129 0:64f46cf1b2b4 4 #include <string.h>
nameless129 4:70a1803901d1 5 #include "displayCom.h"
nameless129 0:64f46cf1b2b4 6 #include "kfont8.h"
nameless129 4:70a1803901d1 7 #include "8x8fontsLib.h"
nameless129 4:70a1803901d1 8 #include "15x16fontsLib.h"
nameless129 1:d4d1951a4202 9
nameless129 4:70a1803901d1 10 SPI spi(p5, p6, p7); //mosi, miso, sclk
nameless129 4:70a1803901d1 11 BusOut buffer_CS(p15,p16,p17,p18,p19,p20);
nameless129 4:70a1803901d1 12 Serial pc(USBTX, USBRX); // tx, rx
nameless129 0:64f46cf1b2b4 13
nameless129 1:d4d1951a4202 14 unsigned int ImageBuf[3][DISPLAY_XSIZE];//16*6
nameless129 1:d4d1951a4202 15 unsigned int ColerMap[3][DISPLAY_XSIZE];
nameless129 1:d4d1951a4202 16
nameless129 1:d4d1951a4202 17 unsigned int CountChar(char *str)
nameless129 1:d4d1951a4202 18 {
nameless129 1:d4d1951a4202 19 unsigned char f_SJISChar = 0;
nameless129 1:d4d1951a4202 20 unsigned char c = 0;
nameless129 1:d4d1951a4202 21 unsigned int CountChar = 0;
nameless129 1:d4d1951a4202 22
nameless129 1:d4d1951a4202 23 c = *str;
nameless129 1:d4d1951a4202 24 while(c != '\0')
nameless129 1:d4d1951a4202 25 {
nameless129 1:d4d1951a4202 26 //2バイト文字の判定
nameless129 1:d4d1951a4202 27 if( ((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)) && f_SJISChar != 1 )
nameless129 1:d4d1951a4202 28 {
nameless129 1:d4d1951a4202 29 f_SJISChar = 1;
nameless129 1:d4d1951a4202 30 }
nameless129 1:d4d1951a4202 31 else
nameless129 1:d4d1951a4202 32 {
nameless129 1:d4d1951a4202 33 f_SJISChar = 0;
nameless129 1:d4d1951a4202 34 CountChar++;
nameless129 1:d4d1951a4202 35 }
nameless129 1:d4d1951a4202 36 str++;
nameless129 1:d4d1951a4202 37 c = *str;
nameless129 1:d4d1951a4202 38 }
nameless129 1:d4d1951a4202 39 return CountChar;
nameless129 1:d4d1951a4202 40 }
nameless129 1:d4d1951a4202 41
nameless129 0:64f46cf1b2b4 42 void SPILineOut(unsigned char setLine)
nameless129 0:64f46cf1b2b4 43 {
nameless129 0:64f46cf1b2b4 44 unsigned int data[3]={0};
nameless129 0:64f46cf1b2b4 45 unsigned int i = 0;
nameless129 0:64f46cf1b2b4 46 for(i=0;i<=5;i++)
nameless129 0:64f46cf1b2b4 47 {
nameless129 0:64f46cf1b2b4 48 data[0] |= ((ImageBuf[2][setLine]>>(15-i))&0x01) << (15-(3*i));
nameless129 0:64f46cf1b2b4 49 }
nameless129 0:64f46cf1b2b4 50 for(i=0;i<=4;i++)
nameless129 0:64f46cf1b2b4 51 {
nameless129 0:64f46cf1b2b4 52 data[0] |= ((ImageBuf[1][setLine]>>(15-i))&0x01) << (14-(3*i));
nameless129 0:64f46cf1b2b4 53 data[0] |= ((ImageBuf[0][setLine]>>(15-i))&0x01) << (13-(3*i));
nameless129 0:64f46cf1b2b4 54 }
nameless129 0:64f46cf1b2b4 55
nameless129 0:64f46cf1b2b4 56 for(i=0;i<=5;i++)
nameless129 0:64f46cf1b2b4 57 {
nameless129 0:64f46cf1b2b4 58 data[1] |= ((ImageBuf[1][setLine]>>(10-i))&0x01) << (15-(3*i));
nameless129 0:64f46cf1b2b4 59 }
nameless129 0:64f46cf1b2b4 60 for(i=0;i<=4;i++)
nameless129 0:64f46cf1b2b4 61 {
nameless129 0:64f46cf1b2b4 62 data[1] |= ((ImageBuf[0][setLine]>>(10-i))&0x01) << (14-(3*i));
nameless129 0:64f46cf1b2b4 63 data[1] |= ((ImageBuf[2][setLine]>>(9-i))&0x01) << (13-(3*i));
nameless129 0:64f46cf1b2b4 64 }
nameless129 0:64f46cf1b2b4 65
nameless129 0:64f46cf1b2b4 66 for(i=0;i<=5;i++)
nameless129 0:64f46cf1b2b4 67 {
nameless129 0:64f46cf1b2b4 68 data[2] |= ((ImageBuf[0][setLine]>>(5-i))&0x01) << (15-(3*i));
nameless129 0:64f46cf1b2b4 69 }
nameless129 0:64f46cf1b2b4 70 for(i=0;i<=4;i++)
nameless129 0:64f46cf1b2b4 71 {
nameless129 0:64f46cf1b2b4 72 data[2] |= ((ImageBuf[2][setLine]>>(4-i))&0x01) << (14-(3*i));
nameless129 0:64f46cf1b2b4 73 data[2] |= ((ImageBuf[1][setLine]>>(4-i))&0x01) << (13-(3*i));
nameless129 0:64f46cf1b2b4 74 }
nameless129 0:64f46cf1b2b4 75 spi.write(data[0]);
nameless129 0:64f46cf1b2b4 76 spi.write(data[1]);
nameless129 0:64f46cf1b2b4 77 spi.write(data[2]);
nameless129 0:64f46cf1b2b4 78 }
nameless129 0:64f46cf1b2b4 79
nameless129 1:d4d1951a4202 80 void outBordData()
nameless129 0:64f46cf1b2b4 81 {
nameless129 1:d4d1951a4202 82 unsigned char ch = 0,Max_ch=0;
nameless129 0:64f46cf1b2b4 83 unsigned int i = 0;
nameless129 1:d4d1951a4202 84 Max_ch = (DISPLAY_XSIZE-16)/16;
nameless129 1:d4d1951a4202 85 for(ch=0;ch<=Max_ch;ch++)
nameless129 0:64f46cf1b2b4 86 {
nameless129 1:d4d1951a4202 87 wait_us(10);
nameless129 4:70a1803901d1 88 buffer_CS = 0x01 << ch;
nameless129 1:d4d1951a4202 89 for(i=(ch*16);i<(ch*16+16);i++)
nameless129 1:d4d1951a4202 90 {
nameless129 1:d4d1951a4202 91 SPILineOut(i);
nameless129 1:d4d1951a4202 92 }
nameless129 0:64f46cf1b2b4 93 }
nameless129 0:64f46cf1b2b4 94 }
nameless129 0:64f46cf1b2b4 95
nameless129 1:d4d1951a4202 96 void bufLeftShift_Loop(void)
nameless129 1:d4d1951a4202 97 {
nameless129 1:d4d1951a4202 98 signed int i = 0;
nameless129 1:d4d1951a4202 99
nameless129 1:d4d1951a4202 100 for(i=(DISPLAY_XSIZE-1);i>=1;i--)
nameless129 1:d4d1951a4202 101 {
nameless129 1:d4d1951a4202 102 ImageBuf[0][i] = ImageBuf[0][i-1];
nameless129 1:d4d1951a4202 103 ImageBuf[1][i] = ImageBuf[1][i-1];
nameless129 1:d4d1951a4202 104 ImageBuf[2][i] = ImageBuf[2][i-1];
nameless129 1:d4d1951a4202 105 }
nameless129 1:d4d1951a4202 106 ImageBuf[0][0] = ImageBuf[0][(DISPLAY_XSIZE-1)];
nameless129 1:d4d1951a4202 107 ImageBuf[1][0] = ImageBuf[1][(DISPLAY_XSIZE-1)];
nameless129 1:d4d1951a4202 108 ImageBuf[2][0] = ImageBuf[2][(DISPLAY_XSIZE-1)];
nameless129 1:d4d1951a4202 109
nameless129 1:d4d1951a4202 110 }
nameless129 1:d4d1951a4202 111
nameless129 0:64f46cf1b2b4 112 void bufLeftShift(void)
nameless129 1:d4d1951a4202 113 {
nameless129 0:64f46cf1b2b4 114 signed int i = 0;
nameless129 0:64f46cf1b2b4 115
nameless129 1:d4d1951a4202 116 for(i=(DISPLAY_XSIZE-1);i>=1;i--)
nameless129 1:d4d1951a4202 117 {
nameless129 1:d4d1951a4202 118 ImageBuf[0][i] = ImageBuf[0][i-1];
nameless129 1:d4d1951a4202 119 ImageBuf[1][i] = ImageBuf[1][i-1];
nameless129 1:d4d1951a4202 120 ImageBuf[2][i] = ImageBuf[2][i-1];
nameless129 1:d4d1951a4202 121 }
nameless129 1:d4d1951a4202 122 ImageBuf[0][0] = 0;
nameless129 1:d4d1951a4202 123 ImageBuf[1][0] = 0;
nameless129 1:d4d1951a4202 124 ImageBuf[2][0] = 0;
nameless129 1:d4d1951a4202 125 }
nameless129 1:d4d1951a4202 126
nameless129 1:d4d1951a4202 127 void TestMode(void)
nameless129 1:d4d1951a4202 128 {
nameless129 1:d4d1951a4202 129 unsigned char i = 0;
nameless129 1:d4d1951a4202 130
nameless129 1:d4d1951a4202 131 for(i=0;i<16;i++)
nameless129 1:d4d1951a4202 132 {
nameless129 1:d4d1951a4202 133 ImageBuf[0][i] = 0xffff;
nameless129 1:d4d1951a4202 134 }
nameless129 1:d4d1951a4202 135 for(i=16;i<16+16;i++)
nameless129 1:d4d1951a4202 136 {
nameless129 1:d4d1951a4202 137 ImageBuf[1][i] = 0xffff;
nameless129 1:d4d1951a4202 138 }
nameless129 1:d4d1951a4202 139 for(i=32;i<32+16;i++)
nameless129 1:d4d1951a4202 140 {
nameless129 1:d4d1951a4202 141 ImageBuf[2][i] = 0xffff;
nameless129 1:d4d1951a4202 142 }
nameless129 1:d4d1951a4202 143
nameless129 1:d4d1951a4202 144 outBordData();
nameless129 1:d4d1951a4202 145
nameless129 1:d4d1951a4202 146 while(1)
nameless129 1:d4d1951a4202 147 {
nameless129 1:d4d1951a4202 148 wait(0.1);
nameless129 1:d4d1951a4202 149 bufLeftShift_Loop();
nameless129 1:d4d1951a4202 150 outBordData();
nameless129 1:d4d1951a4202 151 }
nameless129 1:d4d1951a4202 152 }
nameless129 1:d4d1951a4202 153
nameless129 1:d4d1951a4202 154 void SetRandamColer(void)
nameless129 1:d4d1951a4202 155 {
nameless129 1:d4d1951a4202 156 unsigned char color = 0;
nameless129 1:d4d1951a4202 157 unsigned int i=0,j=0;
nameless129 1:d4d1951a4202 158
nameless129 1:d4d1951a4202 159 memset(ColerMap,0,sizeof(ColerMap));
nameless129 1:d4d1951a4202 160 for(j=0;j<DISPLAY_XSIZE;j++)
nameless129 0:64f46cf1b2b4 161 {
nameless129 1:d4d1951a4202 162 for(i=0;i<16;i++)
nameless129 1:d4d1951a4202 163 {
nameless129 1:d4d1951a4202 164 color = rand()%7;
nameless129 1:d4d1951a4202 165 if(color == COLOR_G || color == COLOR_C || color == COLOR_Y || color == COLOR_W)
nameless129 1:d4d1951a4202 166 {
nameless129 1:d4d1951a4202 167 ColerMap[0][j] |= 1<<i;
nameless129 1:d4d1951a4202 168 }
nameless129 1:d4d1951a4202 169 if(color == COLOR_R || color == COLOR_Y || color == COLOR_M || color == COLOR_W)
nameless129 1:d4d1951a4202 170 {
nameless129 1:d4d1951a4202 171 ColerMap[1][j] |= 1<<i;
nameless129 1:d4d1951a4202 172 }
nameless129 1:d4d1951a4202 173 if(color == COLOR_B || color == COLOR_C || color == COLOR_M || color == COLOR_W)
nameless129 1:d4d1951a4202 174 {
nameless129 1:d4d1951a4202 175 ColerMap[2][j] |= 1<<i;
nameless129 1:d4d1951a4202 176 }
nameless129 1:d4d1951a4202 177 }
nameless129 0:64f46cf1b2b4 178 }
nameless129 1:d4d1951a4202 179 }
nameless129 1:d4d1951a4202 180
nameless129 1:d4d1951a4202 181 void ApplyColerMap(void)
nameless129 1:d4d1951a4202 182 {
nameless129 1:d4d1951a4202 183 unsigned i = 0;
nameless129 1:d4d1951a4202 184 for(i=0;i<DISPLAY_XSIZE;i++)
nameless129 1:d4d1951a4202 185 {
nameless129 1:d4d1951a4202 186 ImageBuf[0][i] = ImageBuf[0][i]&ColerMap[0][i];
nameless129 1:d4d1951a4202 187 ImageBuf[1][i] = ImageBuf[1][i]&ColerMap[1][i];
nameless129 1:d4d1951a4202 188 ImageBuf[2][i] = ImageBuf[2][i]&ColerMap[2][i];
nameless129 1:d4d1951a4202 189 }
nameless129 1:d4d1951a4202 190 }
nameless129 1:d4d1951a4202 191
nameless129 1:d4d1951a4202 192
nameless129 0:64f46cf1b2b4 193 int main()
nameless129 0:64f46cf1b2b4 194 {
nameless129 0:64f46cf1b2b4 195 unsigned int i = 0;
nameless129 3:5605bd4d6295 196 char tmpstr[100];
nameless129 4:70a1803901d1 197
nameless129 4:70a1803901d1 198 /*=====================*/
nameless129 4:70a1803901d1 199 /*ここを書き換えてください*/
nameless129 4:70a1803901d1 200 /*=====================*/
nameless129 4:70a1803901d1 201 //ET2013 ARMブース mbedコーナーにようこそ!
nameless129 4:70a1803901d1 202 char strs[100]={0x82,0x64,0x82,0x73,0x82,0x51,0x82,0x4f,0x82,0x50,0x82,0x52,0x81,0x40,0x82,0x60,
nameless129 4:70a1803901d1 203 0x82,0x71,0x82,0x6c,0x83,0x75,0x81,0x5b,0x83,0x58,0x81,0x40,0x82,0x8d,0x82,0x82,
nameless129 4:70a1803901d1 204 0x82,0x85,0x82,0x84,0x83,0x52,0x81,0x5b,0x83,0x69,0x81,0x5b,0x82,0xc9,0x82,0xe6,
nameless129 4:70a1803901d1 205 0x82,0xa4,0x82,0xb1,0x82,0xbb,0x81,0x49,0x00};
nameless129 4:70a1803901d1 206
nameless129 0:64f46cf1b2b4 207 spi.format(16,1);
nameless129 0:64f46cf1b2b4 208 spi.frequency(1000000);
nameless129 0:64f46cf1b2b4 209
nameless129 3:5605bd4d6295 210 memset(tmpstr,0,sizeof(tmpstr));
nameless129 3:5605bd4d6295 211
nameless129 0:64f46cf1b2b4 212 memset(ImageBuf,0,sizeof(ImageBuf));
nameless129 0:64f46cf1b2b4 213 i=0;
nameless129 5:6ff934d885d2 214 wait(0.2);
nameless129 1:d4d1951a4202 215 //TestMode();
nameless129 1:d4d1951a4202 216 SetRandamColer();
nameless129 1:d4d1951a4202 217 while(1)
nameless129 1:d4d1951a4202 218 {
nameless129 1:d4d1951a4202 219 memset(ImageBuf,0,sizeof(ImageBuf));
nameless129 0:64f46cf1b2b4 220
nameless129 1:d4d1951a4202 221 for(i=0;i<DISPLAY_XSIZE+(15*CountChar(strs)-1);i++)
nameless129 1:d4d1951a4202 222 {
nameless129 1:d4d1951a4202 223 drawStr15x16(strs ,i,COLOR_W);
nameless129 1:d4d1951a4202 224 ApplyColerMap();
nameless129 1:d4d1951a4202 225 outBordData();
nameless129 3:5605bd4d6295 226 wait(0.1);
nameless129 1:d4d1951a4202 227 }
nameless129 1:d4d1951a4202 228 }
nameless129 0:64f46cf1b2b4 229 }