gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:54:52 38 4
gpt4 key购买 nike

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

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;
}

在此之后,您将需要研究开关“去反弹”,这样您就不会为每个按键获得多个事件......

关于c++ - Arduino IDE - 按下按钮时停止重复 'Serial.println',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29348094/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com