 Ultrasonic Sensor (HC-SR04) Arduino Basic Example

The following tutorial will show you the bare minimum code required to use an ultrasonic sensor (HC-SR04) with arduino. In this tutorial the measured value will be shown in the serial monitor in “cm”.

Ultrasonic distance measurements comes for the nature. It is based on the time travelled by a source of sound reflected from objects to measure the distance between the source of sound and the object. Ultrasonic sound sensors has a transmitter and a receiver part. the actual sound distance is from the transmitter to the receiver so we need to divide the result by two to get the actual distance.

To calculate the distance we need the speed of sound (approximatelty 340 meters per second). The formula we use will be the following:

Distance = (Time * SpeedOfSound)/2

The Time (duration) based on the measurement will be in microseconds and we want the result in centimeter so the formula will be the following:

Distance = (Duration * 0.034)/2

To use the HC-SR04 ultrasonics sensor a 10us Trigger impulse is requred at the sensor trigger pin and wait for the pulse incoming at the echo pin.

Wirring diagram for the sensor is the following. VCC to the 5V, GND to the GND, Trigger pin is connected to the D3 and Echo pin to the D2.

For the distance measurement we use the pulseIn function to measure the time at the echo pin. For mroe detailed guide follow the pulseIn guide at the Arduino.cc website:

The code is the following:

int trigPin = 3;
int echoPin = 2;

unsigned long duration;
int distance;

// The setup() function runs once each time the micro-controller starts
void setup()
{
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

}

// Add the main program code into the continuous loop() function
void loop()
{
digitalWrite(trigPin, LOW); //Set the Trigger PIN to LOW state
delayMicroseconds(2);

digitalWrite(trigPin, HIGH); //Pull up the Trigger pin for 10 microsec
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH); //wait for the reflection duration in the echo pin

String resultString = "Distance is "; //Result String

distance = (duration * 0.034 )/ 2; //Distance calculation

resultString +=distance; //Add result to the string
resultString += "cm";

Serial.println(resultString); // Print out the string to the serial port

delayMicroseconds(100);

}

The result will be shown in the Serial Monitor window