Arduino button.isPressed()不起作用?

时间:2015-02-22 00:34:46

标签: button arduino arduino-uno

我正在进行多个LED打开并使用多个按钮关闭我正在使用按钮库但isPressed条件无法正常打印所有Seri​​al.println它应该按下按钮后打印。

我发布我的代码请仔细阅读并提出一些解决方案。

#include <Button.h>

Button pBtn1 = Button(2,PULLUP);
Button pBtn2 = Button(3,PULLUP);

/*LED Lights*/
int pL1 = 2;
int pL2 = 3;

void setup(){
  Serial.begin(9600);

 pinMode(pL1,OUTPUT);
 pinMode(pL2,OUTPUT);
}

void loop(){
  if(pBtn1.isPressed())
  {
     digitalWrite(pL1,HIGH);
     Serial.println("piano1");
  }
  else if(pBtn2.isPressed())
  {
     digitalWrite(pL2,HIGH);
     Serial.println("piano2");
  }
  else
  {
     digitalWrite(pL1,LOW);
     digitalWrite(pL2,LOW);
     Serial.println("no"); 
  }
}

在这里有两个按钮和两个Led灯在按下一个按钮后LED指示灯应该发光,按下第二个按钮后第二个发光但输出有点奇怪,所有Seri​​al.println一次执行。

2 个答案:

答案 0 :(得分:0)

在上面发布的代码中,按钮和LED位于相同的引脚2和3上。它们需要是单独的引脚。

同样是statefull可能会考虑使用uniquePress()代替isPressed()。

答案 1 :(得分:0)

如果您正在使用Arduino的内部上拉电阻器(以及最新的Button.h库),则

Button pBtn1 = Button(2,PULLUP);

使用

Button pBtn1 = Button(2,BUTTON_PULLUP_INTERNAL);