長いです、申し訳ありません
###前提・実現したいこと
Arduinoを用いた小規模な電光掲示板を制作中です
現在の技量は、Arduinoのシリアルpin2~13とアナログpin0~3の計16個のピンを用いて8*8マトリクスを制御できた程度です
実現したいことは、表題の通り制御するマトリクスを8*16に拡張することです
そのために、shiftOUT関数の仕様が知りたいです
###発生している問題・エラーメッセージ
8*16を制御しようとすると、Arduinoのピン数が足りくなるため、シフトレジスタICを用いた制御に変えたいと思います
部品と時間の都合上シフトレジスタで代用せざるを得ません
http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=2349
ですので、こちらのサイト様を参考にさせていただいていますが、shiftOut関数の仕様がよくわかりません
↓にイメージを貼付しています。
###ソースコード
Cで良いのでしょうか?
1//シフトレジスタに割り当てるArduinoのピン番号 2int latchPinA = 3; 3int clockPinA = 4; 4int dataPinA = 2; 5 6int latchPinC = 6; 7int clockPinC = 7; 8int dataPinC = 5; 9 10void setup (){ 11 12 pinMode(latchPinA,OUTPUT); 13 pinMode(latchPinC,OUTPUT); 14 pinMode(clockPinA,OUTPUT); 15 pinMode(clockPinC,OUTPUT); 16 pinMode(dataPinA,OUTPUT); 17 pinMode(dataPinC,OUTPUT); 18 19 digitalWrite(dataPinC,LOW); //ここ2行で初期設定、待機状態にしている 20 digitalWrite(dataPinA,HIGH); 21 22} 23 24void loop (){ 25 26 //アノード側ループ 27 for (int i=0;i < 8;i++) 28 { 29 digitalWrite(latchPinA,LOW); //送っている行はLOW 30 31 shiftOut(dataPinA, clockPinA, LSBFIRST, 1<<i); //行を選択している(?) 32 33 //カソード側ループ 34 for (int j=0;j < 8;j++) 35 { 36 37 digitalWrite(latchPinC,HIGH); 38 shiftOut(dataPinC, clockPinC, LSBFIRST, 1<<i); 39 delay(100); //ここで点灯時間を設定している 40 digitalWrite(dataPinC,LOW) ; //送り終わった列はLOWにする 41 } 42 digitalWrite(latchPinA,HIGH); //送り終わった行はHIGHにする 43 } 44}
###補足情報
http://i.imgur.com/Ig67jR4.png
組んでいる回路のイメージです

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/08 15:46
2015/11/08 15:56
2015/11/08 16:17
2015/11/08 16:54 編集