Arduino按钮.isPressed()不工作



我正在用多个按钮打开和关闭一个多led,我正在使用按钮库,但isPressed条件不起作用,它正在逐个打印所有Serial.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灯应该会发光,按下第二个按钮后第二个会发光,但输出有点奇怪,所有Serial.println都在一次执行。

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

同样是满状态的,可能需要考虑使用uniquePress()来代替isPressed()。

如果您使用的是Arduino的内部上拉电阻器(和最新的Button.h库),而不是

Button pBtn1 = Button(2,PULLUP);

使用

Button pBtn1 = Button(2,BUTTON_PULLUP_INTERNAL);

最新更新