Arduino IDE - 按下按钮时停止重复'Serial.println'
Arduino IDE - Stopping repeat 'Serial.println' when button pressed
我正在做一个项目,当你按下一个按钮,它在串行监视器中显示一个值时(这不是最令人兴奋的项目,但这是我的第一个无教程项目),它的代码是:
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;
}
在这之后,您将需要查看开关"反跳",这样您就不会为每次按键获得多个事件。。。
相关文章:
- 为什么 Serial.println(<char[]>);返回随机字符?
- Arduino Uno - serial.read to a struct of bits
- Arduino - 如何从 serial.read() 馈送结构?
- Arduino在通过Serial读取utf8时表现奇怪
- 如何在 Arduino 延迟期间在 void loop() 中使用 serial.available()?
- Serial.print in arduino 不写变量
- Serial.Read() code
- Windows 和 Linux 中的 USB Serial 之间的区别
- 在Arduino Radiohead中使用serial.read()与const char *
- 使用 Serial.Read 输入在 Arduino 上设置 LCD 光标
- Arduino Serial在哪里创建
- "Serial transmit complete" -中断RS485 [小猎犬骨黑 - 埃]
- Arduino serial.available奇怪的错误
- Arduino IDE - 按下按钮时停止重复'Serial.println'
- Arduino:AT命令-使用serial.Read()读取串行输出的最后一行
- Serial Communication in C++ (Visual Studio 2010, .NET 4.5)
- C++代码Firebreath,Serial Port,JavaScript接口
- 如何使用Arduino的Serial.println打印带有浮点数的字符串
- 为什么Serial.println()会改变函数内部数组的值
- 在哪里定义了Serial.println() ?我能看看它的源代码吗?