p4 ken
/
LED_Matrix_Japanese_Scroll
LT-5016M1を74HC595で制御します。文字スクロールなどの参考にどうぞ。
制作の過程はNotebookに書いています。
Diff: main.cpp
- Revision:
- 26:a370873304d9
- Parent:
- 24:5c85cd80f5fa
- Child:
- 27:c49fd2b1279a
diff -r 5c85cd80f5fa -r a370873304d9 main.cpp --- 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); }