## Hardware Required

Ultrasonic sensor HC-SR04 is used to measure the distance to an object by using ultrasonic waves.

### Pinout

The ultrasonic sensor HC-SR04 includes four pins:

• VCC pin needs to be connected to VCC (5V)
• GND pin needs to be connected to GND (0V)
• TRIG pin this pin receives the control signal (pulse) from Arduino.
• ECHO pin this pin sends a signal (pulse) to Arduino. Arduino measures the duration of pulse to calculate distance.

### How It Works

This section is the in-depth knowledge. DON'T worry if you don't understand. Ignore this section if it overloads you, and come back in another day. Keep reading the next sections.

1. Micro-controller: generates a 10-microsecond pulse on the TRIG pin.
2. The ultrasonic sensor automatically emits the ultrasonic waves.
3. The ultrasonic wave is reflected after hitting an obstacle.
4. The ultrasonic sensor:
• Detects the reflected ultrasonic wave.
• Measures the travel time of the ultrasonic wave.
5. Ultrasonic sensor: generates a pulse to the ECHO pin. The duration of the pulse is equal to the travel time of the ultrasonic wave.
6. Micro-controller measures the pulse duration in the ECHO pin, and then calculate the distance between sensor and obstacle.

See animated GIF image here (you may need to wait a moment for loading)

### How to Get Distance From Ultrasonic Sensor

To get distance from the ultrasonic sensor, we only need to do two steps (1 and 6 on How It Works part)

• Generates a 10-microsecond pulse on TRIG pin
• Measures the pulse duration in ECHO pin, and then calculate the distance between sensor and obstacle

#### Distance Calculation

We have:

• The travel time of the ultrasonic wave (µs): travel_time = pulse_duration
• The speed of the ultrasonic wave: speed = SPEED_OF_SOUND = 340 m/s = 0.034 cm/µs

So:

• The travel distance of the ultrasonic wave (cm): travel_distance = speed × travel_time = 0.034 × pulse_duration
• The distance between sensor and obstacle (cm): distance = travel_distance / 2 = 0.034 × pulse_duration / 2 = 0.017 × pulse_duration

### Arduino - Ultrasonic Sensor

Arduino's pins can generate a 10-microsecond pulse and measure the pulse duration. Therefore, we can get the distance from the ultrasonic sensor by using two Arduino's pins:

• One pin is connected to TRIG PIN to generate 10µs pulse to TRIG pin of the sensor
• Another pin is connected to ECHO PIN measure pulse from the sensor

## Wiring Diagram

Image is developed using Fritzing

## How To Program

• How to generate a 10-microsecond pulse in Arduino's pin, for example, pin 9:
```digitalWrite(9, HIGH);
delayMicroseconds(10);
digitalWrite(9, LOW);```
• How to measures the pulse duration (µs) in Arduino's pin, for example, pin 8:
```duration_us = pulseIn(8, HIGH);
```
• How to calculate distance (cm):
```distance_cm = 0.017 * duration_us;
```

## Arduino Code

```/*
* Created by ArduinoGetStarted, https://arduinogetstarted.com
*
* Arduino - Ultrasonic Sensor HC-SR04
*
* Wiring: Ultrasonic Sensor -> Arduino:
* - VCC  -> 5VDC
* - TRIG -> Pin 9
* - ECHO -> Pin 8
* - GND  -> GND
*
* Tutorial is available here: https://arduinogetstarted.com/tutorials/arduino-ultrasonic-sensor.php
*/

int trigPin = 9;    // TRIG pin
int echoPin = 8;    // ECHO pin

float duration_us, distance_cm;

void setup() {
// begin serial port
Serial.begin (9600);

// configure the trigger pin to output mode
pinMode(trigPin, OUTPUT);
// configure the echo pin to input mode
pinMode(echoPin, INPUT);
}

void loop() {
// generate 10-microsecond pulse to TRIG pin
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

// measure duration of pulse from ECHO pin
...```