Arduino IDE - 按下按钮时停止重复'Serial.println'

Arduino IDE - Stopping repeat 'Serial.println' when button pressed

本文关键字:println Serial IDE 按钮 Arduino      更新时间:2023-10-16

我正在做一个项目,当你按下一个按钮,它在串行监视器中显示一个值时(这不是最令人兴奋的项目,但这是我的第一个无教程项目),它的代码是:

void loop() {
   if(digitalRead(firstButton) == HIGH) {    
      digitalWrite(firstLed, HIGH);    
      Serial.println("First button pressed");
      delay(250);
   }
   if(digitalRead(secondButton) == HIGH) {    
      digitalWrite(secondLed, HIGH);    
      Serial.println("Second button pressed");
      delay(250);
   }
}

这在很大程度上符合您的预期,但如果您按住按钮,它会连续重复"Serial.println"值,直到按钮释放。理想情况下,无论按下一秒钟还是一分钟,我都需要它来声明"Serial.println"值一次。

任何帮助都将不胜感激。。。

不知道这是否重要,但我正在使用带有Wi-Fi屏蔽的Arduino Uno R3(这让我感到各种悲伤,但这是另一天的事)。

为了检测按键更改,您需要检测按钮状态更改事件。在这种情况下,您需要跟踪以前的按钮状态:

void loop() {
    static int firstPrevious = LOW;
    static int secondPrevious = LOW;
    int first = digitalRead(firstButton);
    int second = digitalRead(secondButton);
    if((first == HIGH) && (firstPrevious == LOW)) {
        digitalWrite(firstLed, HIGH);
        Serial.println("First button pressed");
        delay(250);
    }
    if((second == HIGH) && (secondPrevious == LOW)) {
        digitalWrite(secondLed, HIGH);
        Serial.println("Second button pressed");
        delay(250);
    }
    firstPrevious = first;
    secondPrevious = second;
}

在这之后,您将需要查看开关"反跳",这样您就不会为每次按键获得多个事件。。。