Community project

Ultrasonic Distance Display

Arduino
Photo of Ultrasonic Distance Display
Generated with AI

Carlos Abrines

Published October 10, 2026

This project builds a real-time distance measurement device using an ultrasonic sensor and a character LCD display. The HC-SR04 sensor emits sound waves to detect objects up to 4 meters away, while the Arduino Uno processes the readings and shows the distance in centimeters on the 16x2 I2C display, updating every 250 milliseconds.

The guide includes a complete wiring diagram showing how to connect the ultrasonic sensor and LCD to the Arduino, a full parts list, ready-to-upload firmware with distance measurement logic, and step-by-step assembly instructions. Builders will have a working distance meter suitable for robotics projects, obstacle detection, or general sensing applications.

Wiring diagram

Wiring diagram for Ultrasonic Distance Display

Gather all the parts

QtyComponent
1

HC-SR04

Ultrasonic distance measurement sensor

1

LCD 16x2 I2C

16x2 character LCD display with I2C backpack

Assemble it in 4 steps

1. Coloca las piezas sin alimentación

Deja el Arduino Uno desconectado del USB. Pon el HC-SR04 y la pantalla LCD 16×2 con su pequeña placa adaptadora I2C sobre una mesa o protoboard, con los nombres de sus pines visibles.

  • La pantalla debe tener cuatro pines rotulados VCC, GND, SDA y SCL; este proyecto usa esa versión I2C.
  • No conectes ni desconectes cables con el Arduino alimentado: un cable colocado en el pin equivocado puede causar un cortocircuito.

2. Conecta el sensor de distancia

Une VCC del HC-SR04 al pin 5V del Arduino (power), GND del HC-SR04 a un pin GND del Arduino (ground), TRIG al pin digital D7 (signal) y ECHO al pin digital D6 (signal). El sensor usa sus dos círculos metálicos para enviar y escuchar sonido, así que déjalos mirando hacia el objeto que quieres medir.

  • Sigue los nombres impresos junto a los cuatro pines del sensor, no solo el orden de los cables.
  • No intercambies VCC y GND: alimentar el sensor al revés puede dañarlo.

3. Conecta la pantalla

Une VCC de la pantalla LCD al pin 5V del Arduino (power), GND a GND (ground), SDA a A4 (data) y SCL a A5 (data). En el Arduino Uno, A4 y A5 también son los dos pines que comunican con esta pantalla.

  • Si usas cables de colores, rojo para 5V y negro para GND hace más fácil revisar el montaje.
  • Asegúrate de que VCC y GND no estén intercambiados: alimentar la pantalla al revés puede dañarla.

4. Revisa y enciende

Revisa que cada cable llegue al pin indicado y que no haya hebras metálicas tocando dos pines. Después conecta el Arduino al ordenador mediante USB. La pantalla mostrará un mensaje inicial y luego la distancia medida.

  • Coloca un objeto plano delante del sensor, aproximadamente a 10–100 cm, para una primera prueba fácil.
  • El HC-SR04 mide peor superficies blandas, inclinadas o que absorben sonido; no significa necesariamente que el cableado esté mal.

Review all connections

1. Connections between "ultrasonic_1" and "Arduino"

Functionultrasonic_1Arduino
powerVCC5V
groundGNDGND
digitalTRIGGPIO 7
digitalECHOGPIO 6

2. Connections between "lcd_1" and "Arduino"

Functionlcd_1Arduino
powerVCC5V
groundGNDGND
i2cSDAGPIO 18
i2cSCLGPIO 19

Deploy the firmware

#include <Arduino.h>
#include <Wire.h>
#include <NewPing.h>
#include <LiquidCrystal_I2C.h>

const uint8_t TRIG_PIN = 7;
const uint8_t ECHO_PIN = 6;
const unsigned int MAX_DISTANCE_CM = 400;
const unsigned long MEASURE_INTERVAL_MS = 250;

NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE_CM);
LiquidCrystal_I2C lcd(0x27, 16, 2);

unsigned long lastMeasureMs = 0;
int lastDistanceCm = -2;

void showDistance(int distanceCm) {
  if (distanceCm == lastDistanceCm) {
    return;
  }

  lastDistanceCm = distanceCm;
  lcd.setCursor(0, 0);
  lcd.print("Distancia:      ");
  lcd.setCursor(0, 1);

  if (distanceCm == 0) {
    lcd.print("Fuera alcance   ");
  } else {
    lcd.print(distanceCm);
    lcd.print(" cm            ");
  }
}

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Medidor listo");
  lcd.setCursor(0, 1);
  lcd.print("Mida distancia");
}

void loop() {
  unsigned long now = millis();
  if (now - lastMeasureMs < MEASURE_INTERVAL_MS) {
    return;
  }

  lastMeasureMs = now;
  int distanceCm = sonar.ping_cm();
  showDistance(distanceCm);
}

Remix this project

Make it yours in one click

Open a full copy of this project in your own Schematik workspace — diagram, code, parts, and assembly steps included. Swap the sensor, add features, or redesign the whole thing with AI. The author's original stays untouched.

Open in Schematik