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

@Ak Rikas - Условие в цикле while - это условие продолжения, а не условие прерывания. Вы хотите, чтобы цикл прерывался, когда нажата одна ИЛИ другая. Это значит, что он должен продолжаться, когда обе не нажаты. Чтобы проверить, что обе не нажаты, вам нужно использовать AND., @Delta_G