我正在开发一个项目,当你按下一个按钮并在串行监视器中显示一个值(不是最激动人心的但是这是我的第一个非教程项目)时,代码是:< / p>
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(这给了我各种各样的悲伤,但那是另一天)。
答案 0 :(得分:2)
为了检测按键更改,您需要检测按钮状态更改事件。在这种情况下,您需要跟踪上一个按钮状态:
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;
}
在此之后,您将要查看切换&#34; de-bounce&#34;所以你不能为每个按键获得多个事件......