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

Dependencies:   mbed

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

Revision:
16:cd36324730ad
Parent:
15:5cec652070ca
Child:
19:7ba73bd55ca5
--- a/main.cpp	Mon Sep 26 16:05:55 2016 +0000
+++ b/main.cpp	Wed Sep 28 15:40:10 2016 +0000
@@ -7,7 +7,9 @@
 DigitalIn BUTTON(USER_BUTTON);
 Serial pc(USBTX, USBRX);
 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},
@@ -60,6 +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; // 左スクロールした量
@@ -72,7 +75,7 @@
 int main() {
     SPI spi(PB_15, PB_14, PB_13); // SPIピンの指定
     spi.format(8, 0); // 74595へ8ビットずつ送る
-    spi.frequency(96/8*1000*1000); // 74595へのクロック周波数
+    spi.frequency(96/16*1000*1000); // デフォルト1*1000*1000
     pc.attach(receive, Serial::RxIrq);
     timer.start(); // 経過時間デバッグ用
     
@@ -91,11 +94,14 @@
         
         // 表示パターン送り込み
         for(int i=0; i<4*11; i++){
-            spi.write(0b00000001 << round/100);
+            spi.write(0b00000001 << round/800);
+        }
+        for(int i=0; i<8; i++){
+            spi.write(0b00000000);
         }
         
         // スクロール
-        if(round > 800) { // スクロール速度
+        if(round > 6400) { // スクロール速度
             scroll++; // 1ドットスクロールする
             round = 0; // スキャン周回カウントリセット
         }
@@ -113,7 +119,7 @@
         while(timer.read_us()<0) { // 数字のぶんだけ暗くする
             wait_us(10);
         }
-        G = BUTTON; // ボタン押すと/*消*/灯
+        G = !BUTTON; // ボタン押すと消灯
         
         // ダイナミック点灯のパルス幅を決める
         while(timer.read_us()<100) { // 100*2500でゆっくり