我想要完成的是用手指按下按钮后再调用一次按钮。有时候它有效,但也有时候它不起作用。我们说我需要从菜单中选择。有时,当我按下或按下按钮时,它会完美地移动,但有时候,只需按一下它就会移动两次。我想解决这个问题。
全球某处:
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;
我只有一个电阻连接到其中一个引脚但是我忘了我放的值,很可能是2.2k。
再一次,有时它很好,但不是经常完美。我也认为玩debounceDelay
的价值可能会影响我的菜单,我记得它确实如此。当值增加时,响应变慢。我认为这称为软件去抖动。也许我可以添加一些东西来使其成为硬件去抖动。