Arduino开关按钮

时间:2014-09-04 04:28:47

标签: arduino

Wiring Diagram

我有一个简单的Arduino项目,2个按钮,面对一个奇怪的情况,在按钮的开始状态为0,但点击按钮后释放状态变为1很长一段时间然后回到0,请问什么是错的?

代码:

int const BTN1_PIN=2;
int const BTN2_PIN=4;

void setup(){
   pinMode(BTN1_PIN, INPUT);
   pinMode(BTN2_PIN, INPUT);
   Serial.begin(9600);
}

void loop(){
   int status1=digitalRead(BTN1_PIN);
   Serial.print("BTN1 Status :");
   Serial.println(status1);


   int status2=digitalRead(BTN2_PIN);
   Serial.print("BTN2 Status :");
   Serial.println(status2);

 delay(250);
}

在开始时,价值观是:
BTN1状态:0
BTN2状态:0

点。

但是点击button1并释放button1的状态需要很长时间才能回到0,输出如下:
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:0
BTN2状态:0
BTN1状态:0
BTN2状态:0
BTN1状态:0
BTN2状态:0
BTN1状态:0
BTN2状态:0
BTN1状态:0
BTN2状态:0

1 个答案:

答案 0 :(得分:0)

General pushbutton setup

您的设计存在的问题是,当没有按下按钮时,您的I / O引脚未连接任何东西。这导致他们的价值观有点漂浮"浮动"它们意味着它们会在1和0之间跳转。通常,您可以通过高阻值电阻(即10K欧姆)将I / O引脚直接连接到+ 5v,然后通过按钮将I / O引脚连接到地。这样,当你在没有按下按钮的情况下读取引脚时,你会得到一个坚固的+ 5v(由于电阻而几乎没有任何电流),但当你按下按钮时,你会短路接地(通过电阻)并得到一个固体0v。这给你一个非常干净的" on"和"关"按下的按钮状态为0v。

Arduinos很酷,因为它们在电路板本身内置了+ 5v的电阻。您只需使用pinMode(pinBUTTON, INPUT_PULLUP);启用它们即可。我已经包含了电路布局应该在上面的设计。

使用arduinos时要记住的一件重要事情是,您始终必须设置pinModes。这是一个容易忘记的步骤,而arduino将会有一种"没有它的工作,但它是你项目中奇怪结果的常见来源。

const int pinBUTTONONE = 2;
const int pinBUTTONTWO = 4;

void setup(){
  pinMode(pinBUTTONONE, INPUT_PULLUP);
  pinMode(pinBUTTONTWO, INPUT_PULLUP);
}

void setup(){
  if(digitalRead(pinBUTTONONE) == LOW){
    // Execute button one pressed code.
  }

  if(digitalRead(pinBUTTONTWO) == LOW){
    // Execute button two pressed code.
  }
}