1

我有一个 Arduino 项目(它实际上是使用 Mintduino,但它是同一个微控制器),它有三个按钮,设置类似于教程(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

所以我只能说按下了一个按钮,而不能分辨出按下的是哪个按钮。如何区分一个按钮按下与另一个按钮按下?

我想我知道为什么会这样,但我想不出一个不涉及使用三种不同电池的解决方案,这样我就可以获得单独的电路。

4

1 回答 1

4

很可能你的接线错误。或者您的代码与您的接线不匹配。

首先,您不应该使用 A0、A1、A2,而是使用数字引脚。请注意,A0、A1、A2 兼作数字引脚,但编号不同。

所以很可能您正在阅读与您期望阅读的别针不同的别针。

接下来是您可能缺少上拉/下拉电阻。不幸的是,教程很烂。它没有告诉您有关内部上拉电阻器的信息,这将允许放弃教程中描述的外部电阻器。

如果这是我怀疑的方式,那么您的引脚会浮动并拾取随机噪声。这可能有许多症状,包括您描述的症状。我建议您扩展您的代码以读取从 0 到 19 的所有数字引脚,并查看它对按钮按下的反应。然后您将知道正确的引脚编号。

万一没有引脚按要求做出反应,您很可能接线错误。

于 2013-05-20T07:23:44.647 回答