Микроконтроллер — кнопка «удерживая» слушателя

Я работаю с 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.

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

0

Решение

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

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

while ((push1_listener = digitalRead(PUSH1)) == 0) {
push2_listener = digitalRead(PUSH2);
if (push2_listener == 0) {
...
}
...
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]