Skip to content
sensors / hc-sr04.md

HC-SR04 Ultrasonic Sensor

4-pin time-of-flight distance sensor — TRIG sends a 10 µs pulse, ECHO returns a pulse whose width is proportional to the round-trip time. Range ~2 cm to 4 m.

In stock Manufacturer 1 files · 79 KB

Specs

Spec Value
Range 2 cm – 400 cm
Resolution 3 mm
Beam angle 15°
Trigger pulse 10 µs HIGH
Echo pulse up to 38 ms
Voltage 5 V
Current 15 mA

5 V logic

The HC-SR04 outputs 5 V on ECHO. If your MCU is 3.3 V (ESP32, Pico), use a voltage divider (1k + 2k) or a level shifter on the ECHO pin.

Wiring (Arduino Uno)

Module Arduino
VCC 5 V
TRIG D9
ECHO D10
GND GND

Code

const int TRIG = 9;
const int ECHO = 10;

void setup() {
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(TRIG, LOW);  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH); delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  long dur = pulseIn(ECHO, HIGH, 30000UL);   // 30 ms timeout
  float cm = dur * 0.0343 / 2.0;
  Serial.print(cm); Serial.println(" cm");
  delay(100);
}

Speed of sound ≈ 343 m/s = 0.0343 cm/µs. Halve for round-trip.

Schematic

The HC-SR04 PCB uses an STC11/STM8 MCU + MAX232-style driver + 40 kHz transducers. See the protocol timing in the datasheet PDF.

Last updated: 2026-05-13 · Source on GitHub