Я работаю с 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.
Кто-нибудь может мне помочь?
Ваш код считывает состояние обеих кнопок один раз, прежде чем войти в цикл while. Тогда он никогда не читает состояние кнопки в цикле while. Таким образом, значение переменных кнопки никогда не изменится в цикле while. Вам необходимо повторно прочитать состояние кнопки в цикле while.
Может быть, что-то вроде этого:
while ((push1_listener = digitalRead(PUSH1)) == 0) {
push2_listener = digitalRead(PUSH2);
if (push2_listener == 0) {
...
}
...
}
Других решений пока нет …