![](/media/cache/profiles/d8f2cfaf0001e1a2b669a0e0a0b924b1.jpg.50x50_q85.png)
LT-5016M1を74HC595で制御します。文字スクロールなどの参考にどうぞ。
制作の過程はNotebookに書いています。
Diff: main.cpp
- Revision:
- 24:5c85cd80f5fa
- Parent:
- 21:bbb751c5d846
- Child:
- 26:a370873304d9
--- a/main.cpp Sun Oct 02 17:17:24 2016 +0000 +++ b/main.cpp Sat Oct 29 12:32:00 2016 +0000 @@ -66,6 +66,7 @@ char scan = 16; // 点灯中の行 int round = 0; // スキャンを何周したか int scroll = 0; // 左スクロールした量 +float speed = 1; // void receive() { // シリアル受信割り込み if(pc.getc() == 0b00000001) pc.printf("received!\r\n"); @@ -75,7 +76,7 @@ int main() { SPI spi(PB_15, PB_14, PB_13); // SPIピンを指定 spi.format(8, 0); // 74595へ8ビットずつ送る - spi.frequency(96/16*1000*1000); // 74595へのクロック周波数 デフォルト1000*1000 + spi.frequency(speed*1000*1000); // 74595へのクロック周波数 pc.attach(receive, Serial::RxIrq); // シリアル受信割り込み pc.baud(9600); // シリアル通信のクロックレート デフォルト9600 timer.start(); // 経過時間のカウントを開始 @@ -94,18 +95,19 @@ } // 表示パターン送り込み - for(int i=0; i<4*4; i++){ // iは最大で4*11文字 - if(round < 5000) { + 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 < 10000) { + } else if(round < 1000) { spi.write(pattern2[scan-1][8-1-i%8]); } else { spi.write(pattern3[scan-1][8-1-i%8]); } +//spi.write(0b11111111); } // スクロール - if(round > 15000) { // スクロール速度 + if(round > 1500) { // スクロール速度 scroll++; // 1ドットスクロールする round = 0; // スキャン周回カウントリセット } @@ -123,7 +125,7 @@ while(timer.read_us()<0) { // 数字のぶんだけ暗くする wait_us(10); } - G = BUTTON; // ボタン押すと点灯 消 + G = !BUTTON; // ボタン押すと!点灯 // ダイナミック点灯のパルス幅を決める while(timer.read_us()<100) { // 100*2500でゆっくり