Arduino 串行监视器中的读取按钮状态问题
我在arduino的一个带按钮的小程序中遇到了一些问题;我有一个代码,我从arduino页面的示例中稍加修改 代码是Arduino 串行监视器中的读取按钮状态问题,arduino,Arduino,我在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 = digi
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
当按钮未按下时
及
当它是
但我收到这样的东西时,它没有按下
0
0
1
0
1
1
0
0
0
1
。。。我对其他类型的输入有这个问题,但我只是想让tu解决这个问题 根据您的解释,您已将按钮连接到5V。然后,当您按下按钮时,您正在将输入连接到逻辑级别1。但当你松开按钮时,Arduin的输入没有连接到任何地方。这不是1或0逻辑级别。这就是为什么你会得到一个模棱两可的解读 你必须放一个下拉电阻器。这是一个电阻之间的输入和GND。通常,4k7电阻是可以的。然后,当松开按钮时,输入将检测到逻辑0。这也是另一种方式。按下时,您可以将按钮连接至GND,并将4k7上拉电阻器连接至逻辑1(5伏) 此外,Arduino还为其数字输入引脚增加了上拉电阻。设置输入后,可通过以下方式转动上拉电阻器:
pinMode(pin, INPUT);
digitalWrite(pin, HIGH);
然后你就不需要使用真正的电阻了。除非您实际将其连接到GND,否则该输入将始终读取1
pinMode(pin, INPUT);
digitalWrite(pin, HIGH);