c++ - 微 Controller - 按钮 'holding down' 监听器

标签 c++ microcontroller

我正在使用 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) {
        ...
    }
    ...
}

关于c++ - 微 Controller - 按钮 'holding down' 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43300195/

相关文章:

使用 Boost 库的 c++ Prim 最小生成树

c++ - 如何从 std::wstring _TCHAR [] 转换?

c++ - 如何使用微 Controller 计算总时间

c++ - 在低功耗多核微 Controller 中使用全局变量不好吗? (C++)

c - Arduino 端口重定位(PORTD 到 PORTB)

c++ - 全屏应用

c++ - OpenGL 中的建模层次结构

c++ - openCV AdaptiveThreshold 与 Otsu 阈值。投资返回率

c - AVR USART 编程

arm - STM32F103中的ADC可以采样高达3Msps吗?