1

超音波センサー値が5cm未満の時、時間遅延機能を止めたい。超音波センサーはデジタル信号を送信するため、これには割り込みを使用できません。ここに私のコード。ここで時間遅延関数は forward(); です。遅延 (4000); 実際、ソナーの読み取り値が 4000ms の前に 5cm 未満の場合、この転送機能を停止したい

誰でも私が何をしなければならないか考えていますか?

void loop {
    if(angleDegrees -10 <headingDegrees && angleDegrees +10 >headingDegrees  ) {
        forward();
        delay(4000);
    }
    if(safeZone>cm) {
        Stop();
    }
    else {
        search();
    }
}   
4

1 に答える 1

1

たとえば、ループを 40 回実行して、毎回超音波センサーの読み取り値を確認できます。例えば:

void loop {
if(angleDegrees -10 <headingDegrees && angleDegrees +10 >headingDegrees  ) {
    forward();
    for(int times=0; times<40; times++) //runs 40 times
    { 
        search(); //Check the sensor
        if(cm<safeZone)
        {
            Stop();
            break; //This exits the for loop
        }
        delay(100); //Waits for 100 ms
    }
}
于 2013-04-05T11:47:13.463 に答える