Arduino while как loop с условием

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

  1. while (digitalRead(bt_Select) == HIGH) {} -- работает.
  2. while (digitalRead(bt_Select) == HIGH || digitalRead(bt_Reject) == HIGH) {} -- Не работает.

Полный код:

const int bt_Select = 2;
const int bt_Reject = 3;

void setup() {
  Serial.begin(9600);  
  pinMode(bt_Select, INPUT_PULLUP);
  pinMode(bt_Reject, INPUT_PULLUP);
}

void loop() {
  Serial.println("Pl input:");

  while (digitalRead(bt_Select) == HIGH {} // This is the line I change
      
  if (digitalRead(bt_Select) == LOW) {
    Serial.println("Select Button pressed:");
    delay(250);
    Serial.println("");
  }

  if (digitalRead(bt_Reject) == LOW) {
    Serial.println("Reject Button pressed:");
    delay(250);
    Serial.println("");
  }
}

, 👍0


1 ответ


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

0

while (digitalRead(bt_Select)==HIGH||digitalRead(bt_Reject)==HIGH){}

должно быть

while (digitalRead(bt_Select)==HIGH&&digitalRead(bt_Reject)==HIGH){}

Первый цикл прервется только в том случае, если вы нажмете обе кнопки одновременно. Я полагаю, что вы пытаетесь выйти, если нажать любую из этих кнопок.

,

да, я пытаюсь сломаться, если нажата какая-либо кнопка., @Ak Rikas

Спасибо, что он работает.. 5n, @Ak Rikas

однако я запутался, как это может работать?!*, @Ak Rikas

@AkRikas Ваш код остается в цикле while, когда одна из кнопок "HIGH", а другая-когда обе кнопки "HIGH". Это ответ на ваш вопрос?, @Python Schlange