前提・実現したいこと
Arduinoを用いて24個のLEDを制御します。
シフトレジスタSN74HC595AGを3つ用いたカスケード接続を行いたいです。
発生している問題・エラーメッセージ
以下のサイトを参考に回路を組みました。
https://okasho-engineer.com/shiftresistors-leds-control/
シフトレジスタの数を3つにして24個のLEDを制御する場合、
プログラムはどのように書き換えればいいでしょうか。
2つの場合は希望通りに動作しました。
該当のソースコード
Arduino
1//シフトレジスタを2つ用いた16個のLED制御 2#define SER 7 3#define RCLK 6 4#define SRCLK 5 5 6byte data[2][1]; 7 8void setup() { 9 pinMode(SER, OUTPUT); 10 pinMode(RCLK, OUTPUT); 11 pinMode(SRCLK, OUTPUT); 12} 13 14void loop() { 15 data[0][0] = B11111110; 16 data[1][0] = B11111111; 17 digitalWrite(RCLK, LOW); 18 shiftOut(SER, SRCLK, LSBFIRST, data[0][0]); 19 shiftOut(SER, SRCLK, LSBFIRST, data[1][0]); 20 digitalWrite(RCLK, HIGH); 21 delay(75); 22}
試したこと
data[3][1];
data[0][0]=データ1;
data[1][0]=データ2;
data[2][0]=データ3;
shiftOut(SER,SRCLK,LSBFIRST,data[0][0]);
shiftOut(SER,SRCLK,LSBFIRST,data[1][0]);
shiftOut(SER,SRCLK,LSBFIRST,data[2][0]);
という様に書き換えて試したのですが、うまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
「という様に書き換えて試したのですが、うまくいきませんでした。 」
どう、うまくいかなかったのでしょう。
基本的にそれでいいように思いますけど。
> うまくいきませんでした。
では、どうなったのですか? 「うまくいかない」という評価なんてどうでもよくて、実際に起った現象はなにか、それを観察することが大事です。
少なくとも、3つを繋いだ回路で「2つの場合」のスケッチを適用すれば3つのうち2つまでは2つの回路と変わらず動くはずですが、どうですか(その場合、3つ目は'前回'の1つ目と同内容になるはず)。
ならないなら、回路(配線)が間違っている可能性大です。
逆に、2つの回路で3つ用のスケッチでも2つ目までは設定されるはず。
とりあえずソフトがおかしいかハードが悪いか、これで弁別できるのでは? (2つでは動いているということなので...)