Ultrasonic Sensor HC-SR04 With Arduino

About: Share Knowledge about Arduino, ESP,GSM,Basic Electronics, DIY PROJECTS, Raspberry pi

This article is a guide about the popular Ultrasonic Sensor HC – SR04. We’ll explain how it works, show you some of its features and share an Arduino project example you can follow to integrate in your projects. We provide a schematic diagram on how to wire the ultrasonic sensor, and an example sketch to use with the Arduino.


The HC-SR04 ultrasonic sensor uses sonar to determine distance to an object like bats do. It offers excellent non-contact range detection with high accuracy and stable readings in an easy-to-use package. It comes complete with ultrasonic transmitter and receiver modules.


Here’s a list of some of the HC-SR04 ultrasonic sensor features and specs:

Power Supply :+5V DC

Quiescent Current : <2mA

Working Current: 15mA

Effectual Angle: <15°

Ranging Distance : 2cm – 400 cm/1″ – 13ft

Resolution : 0.3 cm

Measuring Angle: 30 degree

Trigger Input Pulse width: 10uS

Dimension: 45mm x 20mm x 15mm

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: How Does It Work?

The ultrasonic sensor uses sonar to determine the distance to an object. Here’s what happens:

The transmitter (trig pin) sends a signal: a high-frequency sound.When the signal finds an object, it is reflected and…… the transmitter (echo pin) receives it.

The time between the transmission and reception of the signal allows us to calculate the distance to an object. This is possible because we know the sound’s velocity in the air.

Step 2: HC-SR04 Ultrasonic Sensor Pinout



Trig : Trigger (INPUT)

Echo: Echo (OUTPUT)


Step 3: Where to Buy?

You can check the Ultrasonic SensorHC-SR04 sensor.


Step 4: Arduino With HC – SR04 Sensor

This sensor is very popular among the Arduino tinkerers. So, here we provide an example on how to use the HC-SR04 ultrasonic sensor with the Arduino. In this project the ultrasonic sensor reads and writes the distance to an object in the serial monitor.

The goal of this project is to help you understand how this sensor works. Then, you should be able to use this example in your own projects. Note: There’s an Arduino library called NewPing that can make your life easier when using this sensor.

Step 5: Parts Required

Here’s a list of the parts required to follow the next tutorial:

Arduino UNO

Ultrasonic Sensor (HC-SR04)


Jumper wires

Step 6: Schematics

Follow the next schematic diagram to wire the HC-SR04 ultrasonic sensor to the Arduino.

The following table shows the connections you need to make:
Ultrasonic SensorArduino



Trig Pin11

Echo Pin 12


Step 7: CODE


int trigPin = 11; // Trigger

int echoPin = 12; // Echo

long duration, cm, inches;

void setup() {

//Serial Port begin

Serial.begin (9600);

//Define inputs and outputs

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);


void loop() {

// The sensor is triggered by a HIGH pulse of 10 or more microseconds.

// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:

digitalWrite(trigPin, LOW);


digitalWrite(trigPin, HIGH);


digitalWrite(trigPin, LOW);

// Read the signal from the sensor: a HIGH pulse whose

// duration is the time (in microseconds) from the sending

// of the ping to the reception of its echo off of an object.

pinMode(echoPin, INPUT); duration = pulseIn(echoPin, HIGH);

// Convert the time into a distance cm = (duration/2) / 29.1;

// Divide by 29.1 or multiply by 0.0343 inches = (duration/2) / 74;

// Divide by 74 or multiply by 0.0135 Serial.print(inches);

Serial.print("in, ");






Step 8: Troubleshooting

NOTE: “If the HC-SR04 does not receive an echo then the output never goes low. Devantec and Parallax sensors time out after 36ms and I think 28ms respectively. If you use Pulsin as above then with no return echo the program will hang for 1 second which is the default timeout for Pulsin. You need to use the timeout parameter.


The HC-SR04 barely works to 10 feet giving a total path length of 20 feet and a path time of about 20ms so set the timeout to something above that, say 25 or 30ms. If you put a resistor, say 2k2 between E and T then only connect to T you can use the HC-SR04 from just one Arduino pin. Look up single pin operation of ultrasonic sensors.

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest