I am having trouble getting two of my ultra sonic sensors to read accurate results in cm. I am using a HC-SR04 currently.
I get random numbers at different distances with an object in front (smooth cover book)
Test 1: Real distance: 10 cm Sensor 1: 0.00cm Sensor 2: 82.42
Test 2: Real distance: 10cm Sensor 1: 92.11cm Sensor 2: 95.03
Against the wall with no book:
Test 1: Real distance: 10 cm Sensor 1:0.00cm Sensor 2: 13.20
Test 2: Real distance: 10 cm Sensor 1:24.37cm Sensor 2:26.75
The numbers constantly fluctuate. I am trying to get accurate results.
I am not sure if the sensors are broken or if my code is incorrect.I appreciate any help.
Here is my set up: [
#define trigPin1 13
#define echoPin1 12
#define trigPin2 11
#define echoPin2 10
float duration, distance, duration1, distance1, duration2, distance2;
void setup() {
Serial.begin (9600);
pinMode (trigPin1, OUTPUT);
pinMode (echoPin1, INPUT);
pinMode (trigPin2, OUTPUT);
pinMode (echoPin2, INPUT);
}
void loop() {
FindRange(trigPin1, echoPin1);
duration1 = duration;
distance1 = distance;
FindRange(trigPin2, echoPin2);
duration2 = duration;
distance2 = distance;
Serial.print(distance1);
Serial.print(" cm ");
Serial.print(distance2);
Serial.println(" cm");
delay(100);
}
void FindRange(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) * 0.0345;
delay(100);
}