【发布时间】:2018-06-06 01:22:17
【问题描述】:
每当我通过串行监视器发送值时,但当 void loop() 执行串行延迟函数时,我想执行一个函数。 available() 函数不起作用,所以如果我在延迟函数期间在串行监视器中发送任何值,serial.available 将不起作用
#define red 9
#define yellow 8
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
}
void LightON() {
digitalWrite(red, HIGH);
delay(1000);
digitalWrite(yellow, HIGH);
delay(1000);
digitalWrite(red, LOW);
delay(1000);
}
void LightOff() {
digitalWrite(red, LOW);
digitalWrite(yellow, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
LightON();
if (Serial.available())
{
LightOff();
}
}
如果我在函数 Lighton() 的延迟期间在串行监视器中输入一个值以便执行 Lightoff() 时,我该如何解决这个问题?
【问题讨论】:
-
即使可以,拨打
LightOff也不会停止LightON。从根本上说,您使用的架构无法支持您想要的。您需要LightON在暂停期间监控Serial,而不是使用长delays。或许用millis来监控时间的流逝。 -
好的,如果我在 LightON 中监视串行,如果 LightON 延迟,那么 serial.monitor() 将无法延迟工作
标签: c++ arduino serial-port delay arduino-uno