[code]int trigPin=12; // this pin work as the output of the two trig pin of the two sensor
int echoPin1=8;
int echoPin2=13;
void setup()
{
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(echoPin2, INPUT);
}
void loop()
{
float duration1, distance1, duration2, distance2;
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW); //trig:10 microsecond TTL pulse
duration1 = pulseIn(echoPin1, HIGH);
duration2 = pulseIn(echoPin2, HIGH);
distance1 = duration1/2/29.1;
distance2 = duration2/2/29.1;
Serial.print(distance1);
Serial.print(',');
Serial.println(distance2);
delay(20);
}[/code]
The situation is that on the Serial Monitor, "distance1" shows correct value however "distance2" is always 0.I've found that while "duration1" and "duration2" exchange their order(which means duration2 runs first, then duration1 runs.), the result becomes that distance1 shows 0 but distance2 shows correct value.
It seems there are some problems while I using the function "pulseIn", is that right?
Could anyone help me fix this problem, thanks!
To combat this, you need to ping one sensor by pulling it high, and read the length. Then, you'll want a short delay between them to allow the ping to die off. Then, you should do the same for the second sensor.
This allows you to get the most accurate readings.
Recommended tutorial:
[url=http://www.theengineeringprojects.com/2015/02/interfacing-ultrasonic-sensor-arduino.html]Interface Ultrasonic Sensor with Arduino