Ultrasonic sensor not giving correct readings

Hey guys!

I have been working with ultrasonic sensors for a while but never encountered anything like this but, now a days am facing one problem ,my ultrasonic sensor is not giving me correct readings just showing '0' as distance even when am trying a simple code.

Help please....

// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
const int buzzer = 11;
const int ledPin = 13;

// defines variables
long duration;
int distance;
int safetyDistance;

void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(buzzer, OUTPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // Starts the serial communication
}

void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);

// Calculating the distance
distance= duration*0.034/2;

safetyDistance = distance;
if (safetyDistance <= 5){
** digitalWrite(buzzer, HIGH);**
** digitalWrite(ledPin, HIGH);**
}
else{
** digitalWrite(buzzer, LOW);**
** digitalWrite(ledPin, LOW);**
}

// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
}

Have you tried debugging by printing the value returned by : duration = pulseIn(echoPin, HIGH);?

That is the first place to begin.

Also look at some of your computations that use floating point to compute an integer.

Paul

Hi,

You should try this code out, it worked for me:

// defines arduino pins numbers
const int trigPin = 12;
const int echoPin = 11;
// defines variables
long duration;
int distance;
void setup() 
{
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance from the object = ");
Serial.print(distance);
Serial.println(" cm");
delay(1000);
}

Connect Pins as follows:

  • Pin # 11 of Arduino is connected with Echo Pin of Ultrasonic Sensor HC-SR04.
  • Pin # 12 of Arduino is connected with Trig Pin of Ultrasonic Sensor.

Upload code and open your Serial Terminal, data will appear.

Thanks.