Микроконтроллер - кнопка "удерживая" слушателя

Я работаю с Texas Instruments LauncherPad MSP432 P401R и Energia. Я пытаюсь написать небольшую программу, которая подсчитывает, сколько раз я нажимаю кнопку 2, пока я удерживаю кнопку 1 нажатой.

int push1_listener = -1;
int push2_listener = -1;
int digit = 0;

void setup() {
  Serial.begin(9600);
  pinMode(PUSH1, INPUT_PULLUP);
  pinMode(PUSH2, INPUT_PULLUP);
}

void loop() {
  push1_listener = digitalRead(PUSH1);
  push2_listener = digitalRead(PUSH2);
  while(push1_listener == 0) {
    if(push2_listener == 0) {
      digit++;
      delay(200);
      Serial.print("btn2");
    }
    Serial.print("btn1");
  }
}

Программа переходит в цикл while, я вижу "btn1" в консоли Serial. Однако программа не идет в случае if.

Кто-нибудь может мне помочь?

1 ответ

Решение

Ваш код считывает состояние обеих кнопок один раз, прежде чем войти в цикл while. Тогда он никогда не читает состояние кнопки в цикле while. Таким образом, значение переменных кнопки никогда не изменится в цикле while. Вам необходимо повторно прочитать состояние кнопки в цикле while.

Может быть, что-то вроде этого:

while ((push1_listener = digitalRead(PUSH1)) == 0) {
    push2_listener = digitalRead(PUSH2);
    if (push2_listener == 0) {
        ...
    }
    ...
}
Другие вопросы по тегам