LT-5016M1を74HC595で制御します。文字スクロールなどの参考にどうぞ。

Dependencies:   mbed

制作の過程はNotebookに書いています。

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でゆっくり