Так что мой вопрос больше о поиске элегантного решения.У меня есть несколько кнопок, подключенных к Arduino, которые работают по отдельности.Для простоты просто посмотрите на два.Я хочу разные действия при нажатии кнопок A, B и A + B одновременно (AB).Я могу проверить, какие кнопки были нажаты в данный момент, и выполнить действие, проблема в том, что сначала всегда нажимается одна кнопка, поэтому метод вызывается немедленно, и у меня нет действительно детерминированного поведения.Что я сделал, так это установил задержку и проверил, нажата ли другая кнопка в заданное время:
void loop() {
delay(100);
A = digitalRead(ButtonA);
B = digitalRead(ButtonB);
if (A == 0) {
delay(150);
B = digitalRead(ButtonB);
if (B == 0) {
doAB();
}
else {
doA();
}
}
A = digitalRead(ButtonA);
B = digitalRead(ButtonB);
if (B == 0) {
delay(150);
A = digitalRead(ButtonA);
if (A == 0) {
doAB();
}
else {
doB();
}
}
}
Проблема в том, что этот код зависит от поведения нажатия кнопки.Я уверен, что смогу найти достаточное решение с большим количеством испытаний и проверкой того, что нажимается когда.Хотя с большим количеством кнопок это, кажется, дает очень много вложений, и я думаю, что многие люди имели эту проблему раньше при разработке прошивки.Поэтому мой вопрос заключается в том, если и как это можно сделать более чистым способом.
misc:
Если кто-то держит кнопки, я хочу, чтобы это действие повторялось снова и снова.
Кодирование выполняется на C ++.
doA, B, действия AB занимают некоторое время (1-2 с).