これは非常に興味深い問題です。通常のコンピューターの世界では、スレッド化によってこれを解決します。ただし、OS なしで実行しているため、コルーチン (OS を使用しない偽のスレッド) を実装するか、非同期コードと割り込みを使用するかのいずれかを行う必要があります。
私の理解では、オブジェクトが最初にセンサーの邪魔になったときに何かを印刷するということです.arduinoのunoは、当然のことではなく、コルーチンを実装するのが簡単ではないため、割り込みルートを試します.
まず、このライブラリに興味があるでしょうhttp://playground.arduino.cc/Code/Timer1
タイマーで実行する割り込みサービス ルーチンを追加できます。これには、ライブラリの attachInterrupt(function, period) 関数を使用します。
割り込みサービス ルーチンでは、センサーをチェックし、センサーが最後にトリガーされてからの経過時間を変数に設定し、必要に応じてメッセージを出力します。これは、メイン ループが他のコードを完全に自由に実行でき、他のセンサーをブロックしないことを意味します。
例えば:
void TimFun()
{
static int LastRead;
if(LastRead && (0 == analogRead(sensor1))
{
Serial.println("SensorTrip");
}
LastRead = analogRead(sensor1);
}
void loop()
{
// Do other stuff here
}
void setup()
{
Timer1.initialize(100000);
Timer1.attachInterrupt(TimFun);
// Rest of setup Here
}