![](/media/cache/profiles/d8f2cfaf0001e1a2b669a0e0a0b924b1.jpg.50x50_q85.png)
LT-5016M1を74HC595で制御します。文字スクロールなどの参考にどうぞ。
制作の過程はNotebookに書いています。
Diff: main.cpp
- Revision:
- 1:9f6c6dcdd8d7
- Parent:
- 0:679fb5e8a0b4
- Child:
- 2:75c7836a6ff4
--- a/main.cpp Wed Sep 07 10:32:48 2016 +0000 +++ b/main.cpp Thu Sep 08 13:52:26 2016 +0000 @@ -1,37 +1,34 @@ #include "mbed.h" -DigitalOut RCK(PB_12); -DigitalOut G(PB_1); -DigitalOut SER(PC_6); -DigitalOut CLK(PC_5); +DigitalOut RCK(PB_12);// 74HC595 +DigitalOut G(PB_1); // 74HC595 +DigitalOut SER(PC_6); // 74HC164 +DigitalOut CLK(PC_5); // 74HC164 +unsigned char pattern[2][1] = +{{0b00000000}, + {0b00000000}}; +char scan = 16; // 点灯中の行 int main() { - SPI spi0(PB_15, PB_14, PB_13); //あ - spi0.format(8, 0); - spi0.frequency(100000000); - G = 0; - SER = 0; // 0=ON 1=OFF - CLK = 0; - CLK = 1; + SPI spi(PB_15, PB_14, PB_13); + spi.format(8, 0); + spi.frequency(100000000); - int count = 0; while(1) { - for(int i=0; i<20; i++){ - switch(count){ - case 0: spi0.write(0b00000001); break; - case 1: spi0.write(0b00000010); break; - case 2: spi0.write(0b00000100); break; - case 3: spi0.write(0b00001000); break; - case 4: spi0.write(0b00010000); break; - case 5: spi0.write(0b00100000); break; - case 6: spi0.write(0b01000000); break; - case 7: spi0.write(0b10000000); break; - } + scan++; + if(scan == 17) { + SER = 0; // 点灯 + scan = 1; + } else { + SER = 1; // 消灯 } + spi.write(pattern[0][0]); + RCK = 0; + CLK = 0; + G = 1; // 消灯 RCK = 1; - if(count==7) count=-1; - count++; - wait(0.2); + CLK = 1; + G = 0; // 点灯 } }