Arduino中的按钮去抖是间歇性的

时间:2015-08-17 06:56:31

标签: arduino debouncing

我想要完成的是用手指按下按钮后再调用一次按钮。有时候它有效,但也有时候它不起作用。我们说我需要从菜单中选择。有时,当我按下或按下按钮时,它会完美地移动,但有时候,只需按一下它就会移动两次。我想解决这个问题。

全球某处:

int debounceDelay = 50;

循环中的代码

a3StateDownButton = digitalRead(A3);
if (a3StateDownButton != a3DownButtonLastState) {
  a3DownButtonLastDebounceTime = millis();
}
if ((millis() - a3DownButtonLastDebounceTime) > debounceDelay) {
  if (a3StateDownButton != currenta3ButtonState) {
    currenta3ButtonState = a3StateDownButton;
    if (currenta3ButtonState == HIGH) {
      isDownButtonPressed = true;
      // do what ever you need to do when button is high
    } else if (currenta3ButtonState == LOW) {
      isDownButtonPressed = false;
    }
  }
}
a3DownButtonLastState = a3StateDownButton;

我使用的按钮与此非常相似,几乎完全相同。 enter image description here

我只有一个电阻连接到其中一个引脚但是我忘了我放的值,很可能是2.2k。

再一次,有时它很好,但不是经常完美。我也认为玩debounceDelay的价值可能会影响我的菜单,我记得它确实如此。当值增加时,响应变慢。我认为这称为软件去抖动。也许我可以添加一些东西来使其成为硬件去抖动。

0 个答案:

没有答案