在串行监视器中读取按钮状态的问题

时间:2014-04-10 18:49:55

标签: 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 = 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

...我对其他类型的输入有这个问题,但我只想找出这个问题。

1 个答案:

答案 0 :(得分:0)

根据您的解释,您将按钮连接到5V。然后,当您按下按钮时,您将输入连接到逻辑级别1.但是当您释放按钮时,Arduin的输入连接到任何地方。这不是1和0逻辑电平。这就是你阅读模糊的原因。

你必须放一个下拉电阻。这是输入和GND之间的电阻。通常4k7电阻就可以了。然后当释放按钮时,输入将检测到逻辑0.这反过来也是相反的。您可以按下按钮以在按下时连接到GND,将4k7上拉电阻连接到逻辑1(5伏)。

此外,Arduino的数字输入引脚具有内置上拉电阻。设置输入后,可以通过以下方式打开上拉电阻:

pinMode(pin, INPUT);
digitalWrite(pin, HIGH);

然后你不需要使用实际的电阻器。除非您实际将其连接到GND,否则该输入将始终为1。