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

Dependencies:   mbed

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

Revision:
21:bbb751c5d846
Parent:
20:29dc4a331254
Child:
22:bc786f860cd0
Child:
24:5c85cd80f5fa
diff -r 29dc4a331254 -r bbb751c5d846 main.cpp
--- a/main.cpp	Sun Oct 02 14:47:49 2016 +0000
+++ b/main.cpp	Sun Oct 02 17:17:24 2016 +0000
@@ -4,9 +4,9 @@
 DigitalOut G(PB_1);   // 74595
 DigitalOut SER(PC_6); // 74164
 DigitalOut CLK(PC_5); // 74164
-DigitalIn BUTTON(USER_BUTTON);
-Serial pc(USBTX, USBRX);
-Timer timer; // 経過時間デバッグ用
+DigitalIn BUTTON(USER_BUTTON); // 点灯・消灯ボタン
+Serial pc(USBTX, USBRX); // USBシリアル通信
+Timer timer; // 経過時間のカウンター
 
 // 点灯パターン 手前赤、手前緑...
 unsigned char pattern1[16][8] = // 手前赤、手前緑... // 緑「次は」
@@ -67,20 +67,21 @@
 int round = 0; // スキャンを何周したか
 int scroll = 0; // 左スクロールした量
 
-void receive() {
+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ピンの指定
+    SPI spi(PB_15, PB_14, PB_13); // SPIピンを指定
     spi.format(8, 0); // 74595へ8ビットずつ送る
-    spi.frequency(96/16*1000*1000); // 74595へのクロック周波数
-    pc.attach(receive, Serial::RxIrq);
-    timer.start(); // 経過時間デバッグ用
+    spi.frequency(96/16*1000*1000); // 74595へのクロック周波数 デフォルト1000*1000
+    pc.attach(receive, Serial::RxIrq); // シリアル受信割り込み
+    pc.baud(9600); // シリアル通信のクロックレート デフォルト9600
+    timer.start(); // 経過時間のカウントを開始
     
     while(1) {
-        timer.reset();
+        timer.reset(); // 経過時間0秒
         
         // 行選択
         scan++; // 一行進む
@@ -93,7 +94,7 @@
         }
         
         // 表示パターン送り込み
-        for(int i=0; i<8*2; i++){
+        for(int i=0; i<4*4; i++){ // iは最大で4*11文字
             if(round < 5000) { 
                 spi.write(pattern1[scan-1][8-1-i%8]);
             } else if(round < 10000) {
@@ -122,7 +123,7 @@
         while(timer.read_us()<0) { // 数字のぶんだけ暗くする
             wait_us(10);
         }
-        G = BUTTON; // ボタン押すと点灯
+        G = BUTTON; // ボタン押すと点灯 消
         
         // ダイナミック点灯のパルス幅を決める
         while(timer.read_us()<100) { // 100*2500でゆっくり