p4 ken
/
LED_Matrix_Japanese_Scroll
LT-5016M1を74HC595で制御します。文字スクロールなどの参考にどうぞ。
制作の過程はNotebookに書いています。
Diff: main.cpp
- Revision:
- 16:cd36324730ad
- Parent:
- 15:5cec652070ca
- Child:
- 19:7ba73bd55ca5
diff -r 5cec652070ca -r cd36324730ad main.cpp --- a/main.cpp Mon Sep 26 16:05:55 2016 +0000 +++ b/main.cpp Wed Sep 28 15:40:10 2016 +0000 @@ -7,7 +7,9 @@ DigitalIn BUTTON(USER_BUTTON); Serial pc(USBTX, USBRX); 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}, @@ -60,6 +62,7 @@ {21,0,6,0,68,0,36,0}, {5,0,8,0,66,0,68,0}, {4,0,16,0,65,0,68,0}}; + char scan = 16; // 点灯中の行 int round = 0; // スキャンを何周したか int scroll = 0; // 左スクロールした量 @@ -72,7 +75,7 @@ int main() { SPI spi(PB_15, PB_14, PB_13); // SPIピンの指定 spi.format(8, 0); // 74595へ8ビットずつ送る - spi.frequency(96/8*1000*1000); // 74595へのクロック周波数 + spi.frequency(96/16*1000*1000); // デフォルト1*1000*1000 pc.attach(receive, Serial::RxIrq); timer.start(); // 経過時間デバッグ用 @@ -91,11 +94,14 @@ // 表示パターン送り込み for(int i=0; i<4*11; i++){ - spi.write(0b00000001 << round/100); + spi.write(0b00000001 << round/800); + } + for(int i=0; i<8; i++){ + spi.write(0b00000000); } // スクロール - if(round > 800) { // スクロール速度 + if(round > 6400) { // スクロール速度 scroll++; // 1ドットスクロールする round = 0; // スキャン周回カウントリセット } @@ -113,7 +119,7 @@ while(timer.read_us()<0) { // 数字のぶんだけ暗くする wait_us(10); } - G = BUTTON; // ボタン押すと/*消*/灯 + G = !BUTTON; // ボタン押すと消灯 // ダイナミック点灯のパルス幅を決める while(timer.read_us()<100) { // 100*2500でゆっくり