Кнопка прерывистого прерывания в 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 может повлиять на мое меню, которое я помню, это сделал. Реакция стала медленнее, когда значение было увеличено. Я думаю, что это называется дебагингом программного обеспечения. Может быть, я могу кое-что добавить, чтобы сделать аппаратное устранение неполадок.

0 ответов

Другие вопросы по тегам