Hi, I'm trying my new sensor right now and found out that HC-SR04 is miss calculation when the object is not face to face to sensor or not flat.
this is example code from library called NewPing
// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------
#include <NewPing.h>
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
void setup() {
Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
sonar();
}
void loop() {
delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
Serial.print("Ping: ");
Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.println("cm");
}
this code is working fine when the object is flat and the sensor face to face to it.
like this
#> |
// on the left is sensor on the right is object, this working fine.
but when the object like this
#> /
// on the left is sensor on the right is object that have angle not facing the sensor, this is mess.
What I understand is that HCSR04 measure distance by bouncing sound and calculate the duration.
and I assume when the object not facing the right angle, the sound is bouncing multiple time / miss direction so the calculation is not the same again.
my question is there any way to make the calculation right.? or trick to make it work even without object facing right angle.?
thank you.