library/esp32_ultra_sonic/esp32_ultra_sonic.ino
2018-07-09 11:18:52 +02:00

40 lines
1.1 KiB
C++

#define US_TRIG 13
#define US_ECHO 12
long distance_cm, echo_duration;
void setup() {
//Serial port
Serial.begin(115200);
//Ultra sonic pins
pinMode(US_TRIG, OUTPUT);
pinMode(US_ECHO, INPUT);
}
void loop() {
// start measurment by a short high pulse of 10 microseconds length at the trig pin ...
digitalWrite(US_TRIG,LOW);
delayMicroseconds(2);
digitalWrite(US_TRIG,HIGH);
delayMicroseconds(10);
digitalWrite(US_TRIG,LOW);
// measure the duration in microseconds of the echo pin HIGH - this is the time the echo needs to be back at the sensor
pinMode(US_ECHO,INPUT);
echo_duration = pulseIn(US_ECHO,HIGH);
// convert into cm ... 344m/sec is the speed of noise - thus 34400cm/sec ... or 34,400cm/milisec ... or 0,0344cm/microsec
// the echo has to go the distance twice - forth and back - so the duration has to be the half of the measured one
// distance_cm = echo_duration/2 * 0,0344 or distance_cm = echo_duration/2 / 29,1
distance_cm = (echo_duration/2) / 29.1;
//print this result at the screen
Serial.print("Distance in cm: ");
Serial.println(distance_cm);
//wait before next measurement
delay(250); //ms
}