我在arduino的一个小程序中遇到了一些问题,只需一个按钮;我有一个代码,我从arduino的页面的例子做了一点修改。
代码是
const int buttonPin = 7; // the number of the pushbutton pin
int buttonState = 0;
void setup() {
pinMode(buttonPin, INPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
}
可能你会遵循这个简单的想法,程序读取按钮的状态并向序列发送状态值。 这个想法是,它会发送像
这样的东西0
0
0
0
0
0
未按下按钮时 和
1
1
1
1
1
1
当它。
但是当我没有按下时,我收到了类似的东西
0
0
1
0
1
1
0
0
0
1
...我对其他类型的输入有这个问题,但我只想找出这个问题。
答案 0 :(得分:0)
根据您的解释,您将按钮连接到5V。然后,当您按下按钮时,您将输入连接到逻辑级别1.但是当您释放按钮时,Arduin的输入连接到任何地方。这不是1和0逻辑电平。这就是你阅读模糊的原因。
你必须放一个下拉电阻。这是输入和GND之间的电阻。通常4k7电阻就可以了。然后当释放按钮时,输入将检测到逻辑0.这反过来也是相反的。您可以按下按钮以在按下时连接到GND,将4k7上拉电阻连接到逻辑1(5伏)。
此外,Arduino的数字输入引脚具有内置上拉电阻。设置输入后,可以通过以下方式打开上拉电阻:
pinMode(pin, INPUT);
digitalWrite(pin, HIGH);
然后你不需要使用实际的电阻器。除非您实际将其连接到GND,否则该输入将始终为1。