解決済み - PINを切り替え、Arduinoの他のピンもトリガーする

私が知りたいのですが。

私はピン6,7,8,9をINPUT_PULLUPとして持っています。私はお互いのピンに切り替える。なぜPIN 6でスイッチを押すと時には PIN 7も入力されます。その他のケースでは、7時にスイッチを押すと、他のピンもトリガします。どうして?

この場合はランダムです。私は10回押すとすべてが大丈夫ですが、その後に他のピンもトリガされます。もう1つのケースは4-5回押すだけで、他のピンもトリガします。

一時的なスイッチではなく、スイッチのオン/オフを使用します。

これを修正するには? arduinoによくある問題ですか?

更新

プログラム。 (シンプルプログラム)

int led1 = 1;
int led2 = 2;
int led3 = 3;
int led4 = 5;

int switch1 = 6;
int switch2 = 7;
int switch3 = 8;
int switch4 = 9;

int led = 13;

//int counter = 0;

void setup()
{
 //put your setup code here, to run once
      pinMode(led1, OUTPUT);
      pinMode(led2, OUTPUT);
      pinMode(led3, OUTPUT);
      pinMode(led4, OUTPUT);
      pinMode(switch1, INPUT_PULLUP);
      pinMode(switch2, INPUT_PULLUP);
      pinMode(switch3, INPUT_PULLUP);
      pinMode(switch4, INPUT_PULLUP);
      pinMode(led, OUTPUT);
}  
void loop()
{

if (digitalRead(switch1) == 0){
  digitalWrite(led1, HIGH);
  }

 if (digitalRead(switch1) == 1){
  digitalWrite(led1, LOW);
  } 

if (digitalRead(switch2) == 0){
  digitalWrite(led2, HIGH);
  }

 if (digitalRead(switch2) == 1){
  digitalWrite(led2, LOW);
  } 


if (digitalRead(switch3) == 0){
  digitalWrite(led3, HIGH);
  }

 if (digitalRead(switch3) == 1){
  digitalWrite(led3, LOW);
  } 


if (digitalRead(switch4) == 0){
  digitalWrite(led4, HIGH);
  }

 if (digitalRead(switch4) == 1){
  digitalWrite(led4, LOW);
  } 

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

}

回路図

私のサーキットは入力のように簡単です。リードのみの出力は、抵抗とグランド。

I found similar case http://www.instructables.com/id/Arduino-Push-Switch-Debouncing-Interrupts/

ウェブサイトでは、「この設定の問題は、   ボタンが押されたときに、割り込みが複数回呼び出されていました。   他のボタンをトグルすることもできます。なぜこれが起こったのですか?それは   スイッチがフィードバックをバウンスしています。 "

ハードウェアを変更せずに解決策はありますか?

解決

問題は電線です。

スイッチ用のワイヤーはジャンパーケーブルであり、お互いに接近(タッチ)しています。私は別れようと努力します。他のピンはトリガされません。

0
追加された 編集された
ビュー: 2
あなたの質問は、 "ピン2と3はINPUT_PULLUP"としていますが、ピン2とピン3はLED2とLED3への出力として使用されています。質問を編集して不一致を取り除いてください。それは質問が割り込みとは関係がないように見えるので、また、質問のタイトルから "割り込み"を削除します。
追加された 著者 Martin C. Martin,
@Nateowami、私はコードと回路図で私の質問を更新されました。あなたはこれについて何か経験がありますか?私はそれがArduinoに何か間違っているはずだと思うから。
追加された 著者 Reunanen,
@NickGammon私はコードと回路図で私の質問を更新されました。あなたはこれについて何か経験がありますか?私はそれがArduinoに何か間違っているはずだと思うから。
追加された 著者 Reunanen,
@Nateowami私はスイッチ2とスイッチ3をマルチメーターでチェックしており、接続していません。一時的なスイッチではなく、ランプスイッチ(オン/オフ)を使用します。簡単な質問:それは完璧な仕事でなければなりません、そうですか?私はまた別の行動をしています、私がスイッチを入れると、他のランプもオン、1秒未満です。自分の動画をチェックする youtube.com/watch?v=s6CxPuQya0g
追加された 著者 Reunanen,
@マジェンコ何を意味するのですか?私は理解しませんでした。ごめんなさい。
追加された 著者 Reunanen,
@NickGammon私はすでに私の投稿を変更しました。
追加された 著者 Reunanen,
私の質問は解決されます。みんなありがとう。
追加された 著者 Reunanen,
私はこの記事を読むことをお勧めします hackaday.com/2015/12/10/… (およびパート1)。 Elliotは、スイッチ、スイッチングノイズ、ソフトウェアでの問題(デバウンス)の解決方法についてすべてカバーしています。
追加された 著者 German,
delay(1000)
追加された 著者 Majenko,
つまり、スイッチを読んでいて、通常の方法で応答することを期待しているときは、遅延は常にあなたが何をしているかにかかわらず悪い考えです。
追加された 著者 Majenko,
何がよくある問題ですか?回路図やコードなしで、あなたの質問は本当の意味をなさない。 良い質問をするにはどうすればよいですか?をご覧ください。
追加された 著者 Nick Gammon,
なぜピン2でスイッチを押すと、ピン3からも入力が得られます。 - スイッチではなく、ピン2とピン3に LED があります。したがって、あなたの質問は意味をなさない。コードと回路図を編集してください。少なくとも内部整合性はあります。
追加された 著者 Nick Gammon,
スケマティックまたは回路の簡単な図を投稿できますか?
追加された 著者 Brett Ryan,
led2とled3のワイヤが接触していないことを確認するためにワイヤをチェックしましたか?彼らがそれに触れていると、間違ったものを時折点灯させることができます。また、スイッチ2とスイッチ3の配線もチェックしてください。どのようなスイッチを使用していますか?
追加された 著者 Brett Ryan,

1 答え

低レベルで簡単なボタンワイヤ間でスイッチングノイズが発生している可能性がありますが、デバウンスなしでは、表示されている効果を引き起こすのに十分な場合があります。

私は、1)デバウンズして任意のボタンを読む短い機能を書くことをお勧めします。 2)各ボタンを2回テストする代わりにif/elseステートメントを使用する。

クイックテストは、これらの2つのボタンの1つを押す間に、1対のワイヤを互いに近づけたり離したりして、距離が離れているかどうかを確認することです。そうであれば、あなたは原因を見つけました。

0
追加された