我有一个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
所以我只能告诉按下了一个按钮,并且无法判断按下了哪个按钮。如何告诉另一个按钮?
我想我知道它为什么会发生,但我想不出一个不涉及使用三种不同电池的解决方案,因此我可以获得单独的电路。
答案 0 :(得分:4)
很可能你的接线错了。或者您的代码与您的布线不符。
首先,你不应该使用A0,A1,A2而是使用数字引脚。请注意,A0,A1,A2兼作数字引脚但具有不同的数字。
所以很可能你正在读取你希望阅读的引脚的不同引脚。
接下来是您可能缺少上拉/下拉电阻。不幸的是,教程很糟糕。它没有告诉您内部上拉电阻,它可以放弃教程中描述的外部电阻。
如果这是我怀疑的方式,那么你的引脚是浮动的并且随机拾取噪音。这可能有任何症状,包括您描述的症状。我建议你扩展你的代码来读取从0到19的所有DIGITAL引脚,看看它对按钮按下的反应。然后你就会知道正确的密码。
如果没有针脚按需要做出反应,你很可能会错误地接线。