我有一个项目来控制我的投影仪通过RS-232命令,投影仪发送反馈给arduino。因此,我有一个带有按钮的液晶显示屏。为了使它更好,我有一个超声波测距仪,我想使用,以便当你接近设备,液晶背光打开30秒,然后关闭。我不能使用延迟,因为我需要继续轮询按钮和从投影仪的串行信息。
有一些社区库,如Timer.h和SimpleTimer.h,但它们只做振荡,等等。
我想做的是:
distance = measureUltrasonicDistance(ultrasonicPin); //returns in cm
if (distance <= 10) {
//digitalWrite(baclkightPin,HIGH);
//have this turn off 30 seconds later
}发布于 2013-10-05 15:48:47
这似乎是事件熔断器库的典型应用程序。
发布于 2013-10-05 03:01:34
首先要实现的是循环()被连续调用,您可以使用“看门狗”模式来保持灯不使用计时器。
unsigned long timeoff;
void setup() {
timeoff = millis();
}
void loop() {
distance = measureUltrasonicDistance(ultrasonicPin); //returns in cm
if (distance <= 10) {
digitalWrite(baclkightPin,HIGH);
// compute boundary of when light should be off
timeoff = millis() + 30L*1000L;
}
if (timeoff < millis()) {
digitalWrite(backlightPin, LOW);
}
}希望这有帮助,如果有什么问题请告诉我。
https://stackoverflow.com/questions/19190520
复制相似问题