arduino可以在运行不同的功能时不断检查值吗?

时间:2013-06-04 01:27:37

标签: arduino constants sensor

我有一个arduino R3连接到湿度传感器和湿度/温度传感器。有没有办法使用

millis();

而不是使用

delay(); 

在另一个函数中,程序的其余部分会运行吗?

基本上我的程序每隔几秒检查一次温度,湿度和土壤湿度。但是说水分读数低于200,那么阀门就会打开,让植物得到浇水。如果我想让阀门保持5分钟,那么在同时检查温度和湿度的同时还有办法吗?从我现在开始,它等待5分钟,然后在它回到检查值之前完成浇水。

1 个答案:

答案 0 :(得分:3)

是的,您可以使用millis()。

例如,定义阀门保持打开的时间长度,并在阀门打开时声明另外两个变量存储,以及何时

long valveOpenedDuration = 60000;   // 60000 milliseconds => one minute
long timeWhenValveWasOpened;
bool valveIsOpened = false;

当您想要打开阀门时,只需在发生阀门时存储,并存储阀门已打开:

   timeWhenValveWasOpened = millis ();
   valveIsOpened = true;

然后在你的循环中你可以调用这个函数

void checkValve {
     if (valveIsOpened) {
         if (millis () - timeWhenValveWasOpened > valveOpenedDuration) {
               // do something here
               valveIsOpened = false;
         }
     }
}