1

私はArduinoプロジェクト(実際にはMintduinoを使用していますが、同じマイクロコントローラです)を持っています.3つのボタンがあり、チュートリアル(http://arduino.cc/en/Tutorial/ButtonStateChange)のように設定され、それらの間に共通の + と - があります. ボタンは、A0、A1、および A2 に個別に接続されています。それらを読むために使用するコードは次のとおりです。

void setup() {
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT); 
  Serial.begin(9600);
}

void loop() {
  Serial.print("b1: ");
  Serial.print(digitalRead(A0));
  Serial.print("  b2: ");
  Serial.print(digitalRead(A1));
  Serial.print("  b3: ");
  Serial.print(digitalRead(A2));
  Serial.println("");
}

ボタンが押されていないときは、次のようになります。

b1: 1 b2: 1 b3: 1

そして、任意のボタンを押すと、次のようになります。

b1: 0 b2: 0 b3: 0

そのため、ボタンが押されたことしかわかりません。どのボタンが押されたかはわかりません。ボタンの押下を別のボタンと区別するにはどうすればよいですか?

なぜそれが起こっているのかはわかっていると思いますが、個別の回路を得るために3つの異なるバッテリーを使用しない解決策は考えられません.

4

1 に答える 1

4

配線を間違えている可能性が高いです。または、コードが配線と一致しません。

まず、A0、A1、A2 ではなく、デジタル ピンを使用する必要があります。A0、A1、A2 はデジタル ピンとしても機能しますが、番号が異なります。

したがって、おそらく、読み取ると予想されるピンとは異なるピンを読み取っています。

次に、プルアップ/プルダウン抵抗が不足している可能性があります。残念ながら、チュートリアルは最悪です。チュートリアルで説明されている外部抵抗を捨てることができる内部プルアップ抵抗については説明していません。

それが私が疑う方法である場合、ピンが浮いていてランダムなノイズを拾っています。これには、説明した症状を含め、いくつもの症状が発生する可能性があります。コードを拡張して 0 から 19 までのすべての DIGITAL ピンを読み取り、ボタンを押したときにどのように反応するかを確認することをお勧めします。その後、適切なピン番号がわかります。

ピンが希望どおりに反応しない場合は、配線が間違っている可能性があります。

于 2013-05-20T07:23:44.647 に答える