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

Dependencies:   mbed

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

Revision:
38:97031cb65085
Parent:
34:e9895343c300
Child:
39:f9a450e32abb
--- a/main.cpp	Mon Feb 27 09:29:29 2017 +0000
+++ b/main.cpp	Thu Mar 23 10:09:10 2017 +0000
@@ -1,12 +1,15 @@
 #include "mbed.h"
 
-DigitalOut RCK(D9);// 74595
-DigitalOut G(D10);   // 74595
+DigitalOut RCK(D10);// 74595
+DigitalOut G(D9);   // 74595
 DigitalOut SER(D8); // 74164
 DigitalOut CLK(D7); // 74164
-//DigitalIn BUTTON(USER_BUTTON); // 点灯・消灯ボタン
+DigitalIn BUTTON(USER_BUTTON); // 点灯・消灯ボタン
 //Serial pc(USBTX, USBRX); // USBシリアル通信
 //Timer timer; // 経過時間のカウンター
+const unsigned char HI = 0;
+const unsigned char LO = 1;
+const unsigned char MODE = 2; //SPI
 
 // 点灯パターン 手前赤、手前緑...
 unsigned short pattern1[16][2*11] =
@@ -55,7 +58,7 @@
 
 int main() {
     SPI spi(D11, D12, D13); // SPIピン mosi, miso, sclk
-    spi.format(8, 0); // 74595へ~ビットずつ送る
+    spi.format(8, MODE); // 74595へ~ビットずつ送る //立ち下りクロック
     spi.frequency(1*1000*1000); // 74595へのクロック周波数 最高96 初期1
 //    pc.attach(receive, Serial::RxIrq); // シリアル受信割り込み
 //    pc.baud(9600); // シリアル通信のクロックレート デフォルト9600
@@ -67,11 +70,11 @@
         // 行選択
         scan++; // 一行進む
         if(scan == 17+0) { // 16行目の次
-            SER = 0; // 点灯
+            SER = LO; // 点灯
             scan = 1; // 1行目に戻る
             round++; // スキャンが1周した
         } else if(scan == 2) { // 2行目
-            SER = 1; // 消灯
+            SER = HI; // 消灯
         }
         
         // 表示パターン送り込み
@@ -79,12 +82,12 @@
 //            if(round < 500) { 
 //                spi.write(pattern1[scan-1][8-1-i%8]);
 //            } else if(round < 1000) {
-                spi.write(pattern2[scan-1][4*11-1-i%(4*11)]); //2*11-1-i%(2*11)
+                spi.write((unsigned char)~pattern2[scan-1][4*11-1-i%(4*11)]); //2*11-1-i%(2*11)
 //            } else {
 //                spi.write(pattern3[scan-1][8-1-i%8]);
 //            }
-//spi.write(0); //消灯
-//spi.write(0b1111111111111111);
+//spi.write(0);
+//spi.write(0b11111111);
         }
         
         // スクロール
@@ -96,11 +99,11 @@
             scroll = 0; // スクロール数リセット
         }
         
-        RCK = 0;
-        CLK = 0;
-        G = 0; // 点灯
-        RCK = 1;
-        CLK = 1;
+        RCK = LO;
+        CLK = LO;
+        G = LO; // 点灯
+        RCK = HI;
+        CLK = HI;
         
         // ここまでの処理時間が長いほど明るくなる
 //        while(timer.read_us()<0) { // 数字のぶんだけ暗くする