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

Dependencies:   mbed

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

Revision:
2:75c7836a6ff4
Parent:
1:9f6c6dcdd8d7
Child:
3:68075c4a9ab4
--- a/main.cpp	Thu Sep 08 13:52:26 2016 +0000
+++ b/main.cpp	Mon Sep 19 12:45:16 2016 +0000
@@ -4,31 +4,50 @@
 DigitalOut G(PB_1);   // 74HC595
 DigitalOut SER(PC_6); // 74HC164
 DigitalOut CLK(PC_5); // 74HC164
-unsigned char pattern[2][1] = 
-{{0b00000000},
- {0b00000000}};
+DigitalIn BUTTON(USER_BUTTON);
+Serial pc(USBTX, USBRX);
+Timer timer; // 経過時間デバッグ用
+unsigned char pattern[3][4] = // 奥緑右~左、奥赤右=左・・・
+{{0b11111100, 0b11111111, 0b00011111, 0b11100000},
+ {0b00000000, 0b00000000, 0b00000000, 0b00000000},
+ {0b00000000, 0b00000000, 0b00000000, 0b00000000}};
 char scan = 16; // 点灯中の行
 
+void receive() {
+    if(pc.getc() == 0b00000001) pc.printf("received!\r\n");
+//    pc.putc(pc.getc() + 1); // echo
+}
+
 int main() {
     SPI spi(PB_15, PB_14, PB_13);
     spi.format(8, 0);
     spi.frequency(100000000);
+    pc.attach(receive, Serial::RxIrq);
+    timer.start(); // 経過時間デバッグ用
     
     while(1) {
+        timer.reset();
         scan++;
         if(scan == 17) {
             SER = 0; // 点灯
-            scan = 1;
-        } else {
+            scan = 0;
+        } else if(scan == 1) {
             SER = 1; // 消灯
         }
         spi.write(pattern[0][0]);
+        spi.write(pattern[0][1]);
+        spi.write(pattern[0][2]);
+        spi.write(pattern[0][3]);
         
         RCK = 0;
         CLK = 0;
         G = 1; // 消灯
         RCK = 1;
         CLK = 1;
-        G = 0; // 点灯
+        if(BUTTON) G = 0; // 点灯
+        while(timer.read_us()<100) {
+            wait_us(10);
+        }
+//        pc.printf("%f\r\n", timer.read());
     }
 }