微控制器 - 按钮 'holding down' 侦听器

Microcontroller - Button 'holding down' listener

我正在使用 Texas Instruments LauncherPad MSP432 P401R 和 Energia。 我正在尝试编写一个小程序来计算在按住 button1 的同时按下 button2 的次数。

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"。但是程序不会进入 if 情况。

有人可以帮我吗?

您的代码在进入 while 循环之前读取一次两个按钮的状态。然后它从不读取 while 循环中的按钮状态。所以按钮变量的值在 while 循环中永远不会改变。您需要在 while 循环中反复重新读取按钮状态。

也许是这样的:

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