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

Dependencies:   mbed

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

Revision:
19:7ba73bd55ca5
Parent:
16:cd36324730ad
Child:
20:29dc4a331254
diff -r cd36324730ad -r 7ba73bd55ca5 main.cpp
--- a/main.cpp	Wed Sep 28 15:40:10 2016 +0000
+++ b/main.cpp	Sun Oct 02 14:35:10 2016 +0000
@@ -9,7 +9,7 @@
 Timer timer; // 経過時間デバッグ用
 
 // 点灯パターン 手前赤、手前緑...
-unsigned char pattern1[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},
@@ -62,7 +62,7 @@
  {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; // 左スクロールした量
@@ -75,7 +75,7 @@
 int main() {
     SPI spi(PB_15, PB_14, PB_13); // SPIピンの指定
     spi.format(8, 0); // 74595へ8ビットずつ送る
-    spi.frequency(96/16*1000*1000); // デフォルト1*1000*1000
+    spi.frequency(96/16*1000*1000); // 74595へのクロック周波数
     pc.attach(receive, Serial::RxIrq);
     timer.start(); // 経過時間デバッグ用
     
@@ -93,15 +93,18 @@
         }
         
         // 表示パターン送り込み
-        for(int i=0; i<4*11; i++){
-            spi.write(0b00000001 << round/800);
-        }
-        for(int i=0; i<8; i++){
-            spi.write(0b00000000);
+        for(int i=0; i<4*12; i++){
+            if(round < 5000) { 
+                spi.write(pattern1[scan-1][8-1-i%16]);
+            } else if(round < 10000) {
+                spi.write(pattern2[scan-1][8-1-i%16]);
+            } else {
+                spi.write(pattern3[scan-1][8-1-i%16]);
+            }
         }
         
         // スクロール
-        if(round > 6400) { // スクロール速度
+        if(round > 15000) { // スクロール速度
             scroll++; // 1ドットスクロールする
             round = 0; // スキャン周回カウントリセット
         }
@@ -119,7 +122,7 @@
         while(timer.read_us()<0) { // 数字のぶんだけ暗くする
             wait_us(10);
         }
-        G = !BUTTON; // ボタン押すと消灯
+        G = BUTTON; // ボタン押すと点灯
         
         // ダイナミック点灯のパルス幅を決める
         while(timer.read_us()<100) { // 100*2500でゆっくり