0

RS-232 コマンドを介してプロジェクターを制御するプロジェクトがあり、プロジェクターは arduino にフィードバックを送信します。したがって、ボタン付きのLCDスクリーンがあります。より良いものにするために、超音波距離計を使用して、デバイスに近づくと、LCD バックライトが 30 秒間オンになり、その後オフになるようにします。ボタンとプロジェクターからのシリアル情報を引き続きポーリングする必要があるため、遅延は使用できません。

Timer.h や SimpleTimer.h などのコミュニティ ライブラリがありますが、これらは発振などを行うだけです。

私がやりたいことはこれです:

distance = measureUltrasonicDistance(ultrasonicPin); //returns in cm
if (distance <= 10) {
    //digitalWrite(baclkightPin,HIGH);
    //have this turn off 30 seconds later
}
4

2 に答える 2

1

まず、loop() が継続的に呼び出されることと、「ウォッチドッグ」パターンを使用してタイマーを使用せずにライトをオンにしておくことができることを理解してください。

unsigned long timeoff;

void setup() {

   timeoff = millis();

}

void loop() {

   distance = measureUltrasonicDistance(ultrasonicPin); //returns in cm
   if (distance <= 10) {
       digitalWrite(baclkightPin,HIGH);

       // compute boundary of when light should be off
       timeoff = millis() + 30L*1000L;   
   }

   if (timeoff < millis()) {

      digitalWrite(backlightPin, LOW);

   }

}

これがお役に立てば幸いです。問題がある場合はお知らせください。

于 2013-10-05T03:01:34.167 に答える
1

これは、イベント ヒューズ ライブラリの典型的なアプリケーションのようです。

于 2013-10-05T15:48:47.587 に答える