p4 ken
/
LED_Matrix_Japanese_Scroll
LT-5016M1を74HC595で制御します。文字スクロールなどの参考にどうぞ。
制作の過程はNotebookに書いています。
Diff: main.cpp
- Revision:
- 10:68078d989f4e
- Parent:
- 9:4efad95ffa53
- Child:
- 11:b58fb852b918
--- a/main.cpp Sat Sep 24 18:08:00 2016 +0000 +++ b/main.cpp Sun Sep 25 23:46:36 2016 +0000 @@ -7,7 +7,7 @@ DigitalIn BUTTON(USER_BUTTON); Serial pc(USBTX, USBRX); Timer timer; // 経過時間デバッグ用 -unsigned char pattern[16][8] = // 手前赤、手前緑・・・ +unsigned char pattern1[16][8] = // 手前赤、手前緑... // 緑「次は」 {{0,128,0,0,0,0,0,0}, {0,129,0,0,0,0,0,6}, {0,130,0,0,0,0,0,4}, @@ -24,6 +24,42 @@ {0,66,0,16,0,68,0,68}, {0,48,0,32,0,132,0,7}, {0,12,0,64,0,0,0,0}}; + +unsigned char pattern2[16][8] = // 橙「横浜」 +{{8,8,9,9,2,2,24,24}, + {8,8,73,73,4,4,7,7}, + {200,200,127,127,200,200,0,0}, + {8,8,9,9,64,64,0,0}, + {63,63,73,73,65,65,64,64}, + {200,200,127,127,194,194,127,127}, + {8,8,4,4,72,72,8,8}, + {156,156,63,63,72,72,8,8}, + {170,170,36,36,68,68,8,8}, + {138,138,36,36,68,68,8,8}, + {137,137,63,63,67,67,72,72}, + {136,136,36,36,242,242,127,127}, + {136,136,36,36,2,2,0,0}, + {136,136,63,63,130,130,16,16}, + {8,8,17,17,98,98,32,32}, + {232,232,96,96,26,26,64,64}}; + +unsigned char pattern3[16][8] = // 赤「終点」 +{{4,0,1,0,64,0,0,0}, + {4,0,9,0,64,0,32,0}, + {18,0,31,0,192,0,63,0}, + {145,0,8,0,64,0,0,0}, + {138,0,8,0,64,0,0,0}, + {68,0,5,0,252,0,31,0}, + {18,0,5,0,4,0,16,0}, + {17,0,10,0,4,0,16,0}, + {31,0,17,0,4,0,16,0}, + {196,0,96,0,4,0,16,0}, + {53,0,6,0,252,0,31,0}, + {21,0,8,0,0,0,0,0}, + {149,0,17,0,36,0,18,0}, + {21,0,6,0,68,0,36,0}, + {5,0,8,0,66,0,68,0}, + {4,0,16,0,65,0,68,0}}; char scan = 16; // 点灯中の行 int round = 0; // スキャンを何周したか int scroll = 0; // 左スクロールした量 @@ -55,11 +91,17 @@ // 表示パターン送り込み for(int i=0; i<8; i++){ - spi.write(pattern[scan-1][8-1-i]); + if(round < 10000) { + spi.write(pattern1[scan-1][8-1-i]); + } else if(round < 20000) { + spi.write(pattern2[scan-1][8-1-i]); + } else { + spi.write(pattern3[scan-1][8-1-i]); + } } // スクロール - if(round > 200) { // スクロール速度 + if(round > 30000) { // スクロール速度 scroll++; // 1ドットスクロールする round = 0; // スキャン周回カウントリセット } @@ -77,7 +119,7 @@ while(timer.read_us()<0) { // 数字のぶんだけ暗くする wait_us(10); } - G = BUTTON; // ボタン押すと点灯 + G = !BUTTON; // ボタン押すと消灯 // ダイナミック点灯のパルス幅を決める while(timer.read_us()<100) { // 100*2500でゆっくり