![](/media/cache/profiles/d8f2cfaf0001e1a2b669a0e0a0b924b1.jpg.50x50_q85.png)
LT-5016M1を74HC595で制御します。文字スクロールなどの参考にどうぞ。
制作の過程はNotebookに書いています。
Diff: main.cpp
- Revision:
- 38:97031cb65085
- Parent:
- 34:e9895343c300
- Child:
- 39:f9a450e32abb
--- a/main.cpp Mon Feb 27 09:29:29 2017 +0000 +++ b/main.cpp Thu Mar 23 10:09:10 2017 +0000 @@ -1,12 +1,15 @@ #include "mbed.h" -DigitalOut RCK(D9);// 74595 -DigitalOut G(D10); // 74595 +DigitalOut RCK(D10);// 74595 +DigitalOut G(D9); // 74595 DigitalOut SER(D8); // 74164 DigitalOut CLK(D7); // 74164 -//DigitalIn BUTTON(USER_BUTTON); // 点灯・消灯ボタン +DigitalIn BUTTON(USER_BUTTON); // 点灯・消灯ボタン //Serial pc(USBTX, USBRX); // USBシリアル通信 //Timer timer; // 経過時間のカウンター +const unsigned char HI = 0; +const unsigned char LO = 1; +const unsigned char MODE = 2; //SPI // 点灯パターン 手前赤、手前緑... unsigned short pattern1[16][2*11] = @@ -55,7 +58,7 @@ int main() { SPI spi(D11, D12, D13); // SPIピン mosi, miso, sclk - spi.format(8, 0); // 74595へ~ビットずつ送る + spi.format(8, MODE); // 74595へ~ビットずつ送る //立ち下りクロック spi.frequency(1*1000*1000); // 74595へのクロック周波数 最高96 初期1 // pc.attach(receive, Serial::RxIrq); // シリアル受信割り込み // pc.baud(9600); // シリアル通信のクロックレート デフォルト9600 @@ -67,11 +70,11 @@ // 行選択 scan++; // 一行進む if(scan == 17+0) { // 16行目の次 - SER = 0; // 点灯 + SER = LO; // 点灯 scan = 1; // 1行目に戻る round++; // スキャンが1周した } else if(scan == 2) { // 2行目 - SER = 1; // 消灯 + SER = HI; // 消灯 } // 表示パターン送り込み @@ -79,12 +82,12 @@ // if(round < 500) { // spi.write(pattern1[scan-1][8-1-i%8]); // } else if(round < 1000) { - spi.write(pattern2[scan-1][4*11-1-i%(4*11)]); //2*11-1-i%(2*11) + spi.write((unsigned char)~pattern2[scan-1][4*11-1-i%(4*11)]); //2*11-1-i%(2*11) // } else { // spi.write(pattern3[scan-1][8-1-i%8]); // } -//spi.write(0); //消灯 -//spi.write(0b1111111111111111); +//spi.write(0); +//spi.write(0b11111111); } // スクロール @@ -96,11 +99,11 @@ scroll = 0; // スクロール数リセット } - RCK = 0; - CLK = 0; - G = 0; // 点灯 - RCK = 1; - CLK = 1; + RCK = LO; + CLK = LO; + G = LO; // 点灯 + RCK = HI; + CLK = HI; // ここまでの処理時間が長いほど明るくなる // while(timer.read_us()<0) { // 数字のぶんだけ暗くする