текущийстатускнопки
Я пытаюсь использовать кнопки мгновенного нажатия для переключения двухцветного светодиода между КРАСНЫМ и ЗЕЛЕНЫМ. У меня есть один рабочий, но когда я пытаюсь адаптировать код для большего количества кнопок, он не работает. Я просто меняю номера кнопок (которые определены).
Компилируется и загружается без ошибок.
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));
}
}
}
@user31208, 👍-3
Обсуждение1 ответ
Лучший ответ:
▲ 1
Вы только сказали "... это не работает", что не дает многого для продолжения, но первое, что я вижу, что может способствовать тому, что это не работает так, как (я думаю) вы ожидаете, это только одна переменная lastEqualButtonTime
для обеих кнопок (она глобальная? Я не вижу определения). Я думаю, вам понадобится по одной для каждой.
,
@JRobert
Смотрите также:
- Наилучший метод проектирования схемы с 20 кнопками
- Возникла проблема с переобъявлением символа другого типа
- Несколько кнопок для управления реле
- Нужна помощь в создании кода, который перемещает двигатель постоянного тока CW или CCW с помощью двух разных кнопок
- Включается долгим нажатием кнопки?
- Arduino Mega, 6 кнопок для каждого аналогового входа (A0-A9) - закрытие одной приводит к чтению другим
- Сохранение значения одним кликом
- Как запустить 3 режима работы, для каждой операции есть отдельная кнопка для выбора режима в Arduino?
пожалуйста, опубликуйте полный код... в том виде, в котором он есть сейчас, не хватает нескольких определений, @jsotola
Возможно, вам стоит рассмотреть возможность использования библиотеки debounce, например https://github.com/thomasfredericks/Bounce2, @Craig
«Это не работает» — не лучшее описание проблемы., @chrisl
Используйте последовательную печать для отладки..., @MatsK
@chrisl больше ничего нет. Если у меня есть "byte currentButton...." только для кнопки один, то это работает. Если я использую его так, как я написал выше, все компилируется и загружается нормально, но когда я нажимаю любую из двух кнопок, ничего не происходит., @user31208
@jsotola Все определено, и я не хотел беспокоить вас другими вещами, которые не имеют никакого отношения к этой проблеме., @user31208
@user31208, вы опубликовали частичную программу, поэтому нет возможности подтвердить, что код компилируется, и нет возможности точно определить сбой, @jsotola
Они не могут все использовать одну и ту же переменную lastEqualButtonTime, чтобы успевать за устранением дребезга., @Delta_G