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

Dependencies:   mbed

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

Revision:
26:a370873304d9
Parent:
24:5c85cd80f5fa
Child:
27:c49fd2b1279a
--- a/main.cpp	Sat Oct 29 12:32:00 2016 +0000
+++ b/main.cpp	Sat Nov 05 06:57:12 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},
@@ -66,7 +66,6 @@
 char scan = 16; // 点灯中の行
 int round = 0; // スキャンを何周したか
 int scroll = 0; // 左スクロールした量
-float speed = 1; // 
 
 void receive() { // シリアル受信割り込み
     if(pc.getc() == 0b00000001) pc.printf("received!\r\n");
@@ -76,7 +75,7 @@
 int main() {
     SPI spi(PB_15, PB_14, PB_13); // SPIピンを指定
     spi.format(8, 0); // 74595へ8ビットずつ送る
-    spi.frequency(speed*1000*1000); // 74595へのクロック周波数
+    spi.frequency(1*1000*1000); // 74595へのクロック周波数 最高96 初期1
     pc.attach(receive, Serial::RxIrq); // シリアル受信割り込み
     pc.baud(9600); // シリアル通信のクロックレート デフォルト9600
     timer.start(); // 経過時間のカウントを開始
@@ -86,7 +85,7 @@
         
         // 行選択
         scan++; // 一行進む
-        if(scan == 17) { // 16行目の次
+        if(scan == 17+17) { // 16行目の次
             SER = 0; // 点灯
             scan = 1; // 1行目に戻る
             round++; // スキャンが1周した
@@ -96,13 +95,13 @@
         
         // 表示パターン送り込み
         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 < 1000) {
+//            if(round < 500) { 
+//                spi.write(pattern1[scan-1][8-1-i%8]);
+//            } else if(round < 1000) {
                 spi.write(pattern2[scan-1][8-1-i%8]);
-            } else {
-                spi.write(pattern3[scan-1][8-1-i%8]);
-            }
+//            } else {
+//                spi.write(pattern3[scan-1][8-1-i%8]);
+//            }
 //spi.write(0b11111111);
         }