【问题标题】:Issues reading button state in the serial monitor在串行监视器中读取按钮状态时出现问题
【发布时间】:2014-04-10 18:49:54
【问题描述】:

我在 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

...我在使用其他类型的输入时遇到了这个问题,但我只是想让你弄清楚这个问题。

【问题讨论】:

    标签: arduino


    【解决方案1】:

    根据您的解释,您将按钮连接到 5V。然后,当您按下按钮时,您将输入连接到逻辑级别 1。但是当您释放按钮时,Arduin 的输入连接到任何地方。这不是 1 也不是 0 逻辑电平。这就是为什么你会得到一个模棱两可的读数。

    你必须放一个下拉电阻。那是输入和GND之间的电阻。通常4k7电阻就可以了。然后,当按钮被释放时,输入将感应到逻辑 0。这也适用于其他方式。您可以在按下时将按钮连接到 GND,并将 4k7 上拉电阻连接到逻辑 1(5 伏)。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 2013-10-20
      相关资源
      最近更新 更多