以下のプログラムはLEDをシフトレジスタで1つずつシフトさせていくプログラムなのですが、私はLEDをシフトさせるのではなく特定したLEDを点灯させたいのですが、どこをどう変更すれば制御できるようになりますか?
#define DATAPIN (9) // 74HC595のDSへ #define LATCHPIN (11) // 74HC595のST_CPへ #define CLOCKPIN (12) // 74HC595のSH_CPへ void MyShiftOut( int dataPin, int clockPin, int bit, uint64_t val ) { for( int i = 0; i < bit; i++ ) { digitalWrite(dataPin, !!(val & ((uint64_t)1 << i))); digitalWrite(clockPin, HIGH); digitalWrite(clockPin, LOW); } } void setup() { pinMode(DATAPIN, OUTPUT); pinMode(LATCHPIN, OUTPUT); pinMode(CLOCKPIN, OUTPUT); } void loop() { for( int i = 0; i < 64; i++ ) { digitalWrite(LATCHPIN, LOW); // 送信中はLATCHPINをLOWに // シフト演算を使って点灯するLEDを選択しています MyShiftOut( DATAPIN, CLOCKPIN, 64, (uint64_t)1 << i ); digitalWrite(LATCHPIN, HIGH); // 送信後はLATCHPINをHIGHに戻す delay(100); } }
質問がいまいち意味不明です
具体的になにをどうしたいのかを質問に追記しましょう
質問は編集できます
回路図は提示できますか。
コードに出てこないピンがどう配線されてるかがわからないとどうにも。
また、
このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
ご指摘ありがとうございます。回路図がわからないので、プログラムが書いてあるサイトのUR Lを貼らさせてもらいました。
「どこをどう変更」以前に、今のプログラムを理解して下さい。
今のプログラムをきちんと理解すれば、特定のLED1個を点灯することは難しくないはずてす。
逆に、今のプログラムを理解しないで「変更」なんて無理です。
1つずつシフトはできているんですよね?
「私はLEDをシフトさせるのではなく」と書かれているので、シフトはしていないのではないですか? 理解できない質問なのですが、、、
回答2件
あなたの回答
tips
プレビュー