0

湿度センサーと湿度/温度センサーに接続された arduino R3 があります。使い方はありますか

millis();

使用する代わりに

delay(); 

プログラムの残りの部分が別の関数で実行されるようにするには?

基本的に、私のプログラムは温度、湿度、および土壌水分レベルを数秒ごとにチェックします。しかし、水分の読み取り値が200を下回ると、バルブがオンになり、植物に水が与えられます. 温度と湿度を同時にチェックしながら、バルブを5分間オンにしたい場合、それを行う方法はありますか? 私が今持っているものから、値の確認に戻る前に、5分間待って散水を終了します。

4

1 に答える 1

3

はい、ミリス()を使用できます。

たとえば、バルブを開いたままにしておく時間を定義し、さらに 2 つの変数を宣言して、バルブが開いているかどうかを保存します。

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 に答える