2013-06-04 64 views
0

我有一個arduino R3連接到溼度傳感器和溼度/溫度傳感器。有沒有辦法使用運行不同的函數時,arduino是否可以不斷檢查值?

millis(); 

,而不是使用

delay(); 

的方式,程序的其餘部分將而在其他功能運行方式?

基本上我的程序每隔幾秒就會檢查溫度,溼度和土壤溼度水平。但是,如果水分讀數降至200以下,那麼將打開閥門讓植物澆水。如果我想讓閥門保持5分鐘,有沒有辦法在溫度和溼度同時檢查的時候這樣做?從現在我們已經等待5分鐘,並在返回檢查值之前完成澆水。

回答

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; 
     } 
    } 
} 
相關問題