Principle
- Ultrasonic sensors use the same principle bats (flying mammals) use to detect obstacles – by sending ultrasonic signals and analysing the reflection / echo
- The time between sending a signal (a trigger pulse of width 10us) and receiving an echo is used to calculate the distance from an object
- HC-SR04 needs +5V DC, works for obstacles at an angle <15°, for distances between 2cm – 400 cm
- Practically, 3-300 cm is fairly accurate (up to 0.3cm). If it is too close or too far, no meaningful echo will be received, and the reading might show a high / inaccurate distance
- Distance = (time taken from trigger to echo/2) x speed of sound
- Speed of sound is about 345 m/s at 23oC
Connections
Assuming digital pin 9 is the triggerPin and digital pin 8 is the echoPin.
Code
C++ | Blocks |
---|---|
long readUltrasonicDistance(int triggerPin, int echoPin) { pinMode(triggerPin, OUTPUT); // Clear the trigger digitalWrite(triggerPin, LOW); delayMicroseconds(2); // Sets the trigger pin to HIGH state for 10 microseconds digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); pinMode(echoPin, INPUT); // Reads the echo pin, and returns the // sound wave travel time in microseconds return pulseIn(echoPin, HIGH); } void setup() { Serial.begin(9600); } void loop() { distanceCm = 0.01723 * readUltrasonicDistance(9, 8); // try to make sense of the above formula! Serial.println(distanceCm); delay(10); }]] ></ac:plain-text-body></ac:structured-macro></div></td><td><div class="content-wrapper"><p><ac:image ac:width="700"><ri:attachment ri:filename="image2020-1-20_14-54-15.png" /></ac:image></p></div></td></tr></tbody></table><p><br /></p><h3>Simulation</h3><p><ac:image ac:width="850"><ri:attachment ri:filename="image2020-1-20_14-51-24.png" /></ac:image></p><p><br /></p><p><br /></p> |