Ultrasonic Sensor HC-SR04 problem

I am not sure what is wrong. the code seems to be right, but the Ultrasonic Sensor tells me the distance is 0. What is wrong?

// 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, LOW);
  digitalWrite(ledPin, HIGH);
}
else{
  digitalWrite(buzzer, LOW);
  digitalWrite(ledPin, LOW);
}

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

Why is this code so far from where distance is computed?

Did you print the time that the pulse took to arrive at the echo pin?

Do you have something hard close in front of the sensor, at a known distance, so there IS something for the pulse to bounce off of?

0 means "no echo pulse received"

Perhaps the object is too close.
Perhaps the object is too far (several meters).
Perhaps the sensor is not wired correctly.