我想为两个按钮进行去抖动。因此,打开Red led或Green led,知道哪个按钮已按下我的程序仅适用于1个按钮。
我认为我需要两个按钮的数组。
有人可以帮我改进我的代码两个按钮或更多吗?
int boton = 11;
int led = 13;
boolean estadoAnterior = LOW;
boolean estadoActual = LOW;
boolean ledOn = false;
int cont=0;
void setup()
{
pinMode(boton, INPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
}
boolean rebote(boolean eAnterior)
{
boolean eActual = digitalRead(boton);
if (eAnterior != eActual)
{
delay(5);
eActual = digitalRead(boton);
}
return eActual;
}
void loop()
{
estadoActual = rebote(estadoAnterior);
if (estadoAnterior == LOW && estadoActual == HIGH)
{
ledOn = !ledOn;
cont++;
Serial.println(cont);
}
estadoAnterior = estadoActual;
digitalWrite(led, ledOn);
}
答案 0 :(得分:0)
总的来说,使用忙碌延迟是一种相当粗略的方法来消除按钮,但它可以用于业余爱好者目的。
estadoAnterior
更改为预期按钮状态数组。boton
创建一组整数。 (在真正的MCU编程中,这将是一个端口+掩码阵列。)更专业的方法可能与this一致。
完成后,将所有标识符重写为英语。我们在编程时不会使用我们的母语,因为这会使源代码变得混乱。你的代码是英语和你母语的混合,很难阅读。