Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Timer 使用arduino中的函数启动计时器_Timer_Arduino - Fatal编程技术网

Timer 使用arduino中的函数启动计时器

Timer 使用arduino中的函数启动计时器,timer,arduino,Timer,Arduino,我有一个通过RS-232命令控制投影仪的项目,投影仪向arduino发送反馈。因此,我有一个带按钮的LCD屏幕。为了让它更好,我有一个超声波测距仪,我想使用,这样当你接近设备时,LCD背光打开30秒,然后关闭。我不能使用延迟,因为我需要继续轮询来自投影仪的按钮和序列信息 有像Timer.h和SimpleTimer.h这样的社区库,但它们只做振荡等 我想做的是: distance = measureUltrasonicDistance(ultrasonicPin); //returns in cm

我有一个通过RS-232命令控制投影仪的项目,投影仪向arduino发送反馈。因此,我有一个带按钮的LCD屏幕。为了让它更好,我有一个超声波测距仪,我想使用,这样当你接近设备时,LCD背光打开30秒,然后关闭。我不能使用延迟,因为我需要继续轮询来自投影仪的按钮和序列信息

有像Timer.h和SimpleTimer.h这样的社区库,但它们只做振荡等

我想做的是:

distance = measureUltrasonicDistance(ultrasonicPin); //returns in cm
if (distance <= 10) {
    //digitalWrite(baclkightPin,HIGH);
    //have this turn off 30 seconds later
}
距离=测量的超声波距离(超声波针)//以厘米为单位返回

if(distance首先要意识到的是loop()是连续调用的,并且您可以使用“看门狗”模式来保持灯亮着,而无需使用计时器

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

   }

}
unsigned long-timeoff;
无效设置(){
timeoff=millis();
}
void循环(){
距离=测量超声波距离(超声波针);//以厘米为单位返回

如果(距离这似乎是