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

Dependencies:   mbed

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

Revision:
40:39e626b5269d
Parent:
39:f9a450e32abb
Child:
41:7c72eff4279a
--- a/main.cpp	Thu Mar 23 11:33:19 2017 +0000
+++ b/main.cpp	Mon Apr 03 09:11:56 2017 +0000
@@ -87,7 +87,8 @@
 char scan = 16; // 点灯中の行
 //int round = 0; // スキャンを何周したか
 //int scroll = 0; // 左スクロールした量
-char speed = 30; // 5+11 // スクロール進段ミリ秒
+char speed = 30-29; // スクロール進段ミリ秒
+int t = 0; // 経過時間
 
 void receive() { // シリアル受信割り込み
 //    if(pc.getc() == 0b00000001) pc.printf("received!\r\n");
@@ -116,14 +117,16 @@
             SER = LO; // 点灯
             scan = 1; // 1行目に戻る
 //            round++; // スキャンが1周した
+//            t = timer.read_ms();
+            t += 1;
         } else if(scan == 2) { // 2行目
             SER = HI; // 消灯
         }
         
         // 表示パターン送り込み
-        int t = timer.read_ms();
 //        int t = scroll;
         for(int i=0; i<4*11; i++){ // iは最大で~*11文字
+        if(true) {
             if(t/8/speed*2 < 4*(166+11)) {
                 unsigned char p;
                 char y = scan-1;
@@ -144,11 +147,13 @@
                 }
                 spi.write(p);
             } else {
-                spi.write((unsigned char)~pattern4[scan-1][4*11-1-i%(4*11)]);
+                spi.write((unsigned char)~pattern5[scan-1][4*11-1-i%(4*11)]);
 //                spi.write((unsigned char)~0b00000000); //消灯
-            } 
+            }
+        }
 //            spi.write((unsigned char)~pattern2[scan-1][4*11-1-i%(4*11)]);
 //spi.write(0);
+//spi.write(0b10101010);
 //spi.write(0b11111111);
         }
         
@@ -160,10 +165,12 @@
 //        if(scroll > 200) { // スクロール幅
 //            scroll = 0; // スクロール数リセット
 //        }
-        
+
+        wait_us(10);
         RCK = LO;
         CLK = LO;
-        G = LO; // 点灯
+//        G = HI; // 消灯
+        wait_us(10);
         RCK = HI;
         CLK = HI;
         
@@ -172,7 +179,7 @@
 //            wait_us(10);
 //        }
 
-//        G = BUTTON; // ボタン押すと消灯
+        if(!BUTTON) G = LO; // ボタン押せば点灯
         
         // ダイナミック点灯のパルス幅を決める
 //        while(timer.read_us()<100) { // 100*2500でゆっくり