1

I want to stop time delay function when ultrasonic sensor value is < 5cm. I cant use interrupt for this because ultrasonic sensor send digital signal. Here my code. here time delay function is, forward(); delay(4000); Actually I want to stop this forward function if sonar reading is <5cm before 4000ms

Any one have a idea what I have to do?

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 回答