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