0

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

millis();

而不是使用

delay(); 

以某种方式使程序的其余部分在另一个函数中运行?

基本上,我的程序每隔几秒钟检查一次温度、湿度和土壤湿度水平。但是如果湿度读数低于 200,那么阀门就会打开,让植物得到浇水。如果我想让阀门保持开启 5 分钟,有没有办法在同时检查温度和湿度的同时做到这一点?从我现在的情况来看,它等待 5 分钟并完成浇水,然后再返回检查值。

4

1 回答 1

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;
         }
     }
}
于 2013-06-04T08:24:49.867 回答