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

Dependencies:   mbed

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

Revision:
24:5c85cd80f5fa
Parent:
21:bbb751c5d846
Child:
26:a370873304d9
--- a/main.cpp	Sun Oct 02 17:17:24 2016 +0000
+++ b/main.cpp	Sat Oct 29 12:32:00 2016 +0000
@@ -66,6 +66,7 @@
 char scan = 16; // 点灯中の行
 int round = 0; // スキャンを何周したか
 int scroll = 0; // 左スクロールした量
+float speed = 1; // 
 
 void receive() { // シリアル受信割り込み
     if(pc.getc() == 0b00000001) pc.printf("received!\r\n");
@@ -75,7 +76,7 @@
 int main() {
     SPI spi(PB_15, PB_14, PB_13); // SPIピンを指定
     spi.format(8, 0); // 74595へ8ビットずつ送る
-    spi.frequency(96/16*1000*1000); // 74595へのクロック周波数 デフォルト1000*1000
+    spi.frequency(speed*1000*1000); // 74595へのクロック周波数
     pc.attach(receive, Serial::RxIrq); // シリアル受信割り込み
     pc.baud(9600); // シリアル通信のクロックレート デフォルト9600
     timer.start(); // 経過時間のカウントを開始
@@ -94,18 +95,19 @@
         }
         
         // 表示パターン送り込み
-        for(int i=0; i<4*4; i++){ // iは最大で4*11文字
-            if(round < 5000) { 
+        for(int i=0; i<4*12; i++){ // iは最大で4*11文字
+            if(round < 500) { 
                 spi.write(pattern1[scan-1][8-1-i%8]);
-            } else if(round < 10000) {
+            } else if(round < 1000) {
                 spi.write(pattern2[scan-1][8-1-i%8]);
             } else {
                 spi.write(pattern3[scan-1][8-1-i%8]);
             }
+//spi.write(0b11111111);
         }
         
         // スクロール
-        if(round > 15000) { // スクロール速度
+        if(round > 1500) { // スクロール速度
             scroll++; // 1ドットスクロールする
             round = 0; // スキャン周回カウントリセット
         }
@@ -123,7 +125,7 @@
         while(timer.read_us()<0) { // 数字のぶんだけ暗くする
             wait_us(10);
         }
-        G = BUTTON; // ボタン押すと点灯 消
+        G = !BUTTON; // ボタン押すと!点灯
         
         // ダイナミック点灯のパルス幅を決める
         while(timer.read_us()<100) { // 100*2500でゆっくり