float getSonar() {
unsigned long pingTime, t0, t1;
float distance;
// make PIN_TRIG output high level lasting for 10μs to triger HC_SR04
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Wait HC-SR04 returning to the high level and measure out this waitting time
t0 = micros();
pingTime = pulseIn(PIN_ECHO, HIGH, timeOut); // unit: us
t1 = micros() - t0;
// calculate the distance according to the time
if (t1 < timeOut) {
distance = (float)pingTime * soundVelocity / 2 / 10000;
} else {
distance = MAX_DISTANCE;
}
return distance; // return the distance value
}
pin: the number of the Arduino pin on which you want to read the pulse. Allowed data types: int.
value: type of pulse to read: either HIGH or LOW. Allowed data types: int.
timeout (optional): the number of microseconds to wait for the pulse to start; default is one second.