Кнопка прерывистого прерывания в Arduino
Я хотел бы, чтобы кнопка была вызвана один раз после того, как я нажму ее пальцами. Иногда это работает, но иногда это не так. Допустим, мне нужно выбрать из меню. Иногда, когда я нажимаю кнопку "вниз" или "вверх", она движется идеально, но иногда она перемещается дважды с помощью одного нажатия. Я хотел бы исправить эту проблему.
Где-то в глобальном:
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,2 кОм.
Опять же, иногда это хорошо, но не всегда идеально. Я также думаю, что играть со значением debounceDelay
может повлиять на мое меню, которое я помню, это сделал. Реакция стала медленнее, когда значение было увеличено. Я думаю, что это называется дебагингом программного обеспечения. Может быть, я могу кое-что добавить, чтобы сделать аппаратное устранение неполадок.