текущийстатускнопки

Я пытаюсь использовать кнопки мгновенного нажатия для переключения двухцветного светодиода между КРАСНЫМ и ЗЕЛЕНЫМ. У меня есть один рабочий, но когда я пытаюсь адаптировать код для большего количества кнопок, он не работает. Я просто меняю номера кнопок (которые определены).
Компилируется и загружается без ошибок.

void loop() {
  byte currentButton1Status = digitalRead(button1);
  if (currentButton1Status == button1Status)
    lastEqualButtonTime = millis();
  else if ((millis() - lastEqualButtonTime) > debounceTimeMs)
  {
    lastEqualButtonTime = millis();
    button1Status = currentButton1Status;

    if (button1Status == LOW) {
      digitalWrite(17, !digitalRead(17));
      digitalWrite(16, !digitalRead(16));
    }
  }

  byte currentButton2Status = digitalRead(button2);
  if (currentButton2Status == button2Status)
    lastEqualButtonTime = millis();
  else if ((millis() - lastEqualButtonTime) > debounceTimeMs)
  {
    lastEqualButtonTime = millis();
    button2Status = currentButton2Status;

    if (button2Status == LOW) {
      digitalWrite(15, !digitalRead(15));
      digitalWrite(14, !digitalRead(14));
    }
  }    
}

, 👍-3


1 ответ


Лучший ответ:

1

Вы только сказали "... это не работает", что не дает многого для продолжения, но первое, что я вижу, что может способствовать тому, что это не работает так, как (я думаю) вы ожидаете, это только одна переменная lastEqualButtonTime для обеих кнопок (она глобальная? Я не вижу определения). Я думаю, вам понадобится по одной для каждой.

,