Logo de Sermanitas

SERMANITAS

Sensor de distancia HC‑SR04 con LED, Buzzer y Pantalla OLED

📄 Descargar PDF del proyecto

En este proyecto medimos la distancia con el sensor ultrasónico HC‑SR04 y mostramos el resultado en una pantalla OLED. Además, activamos un LED y un buzzer según la distancia detectada. Es un proyecto intermedio, visual y muy práctico para aprender a combinar sensores, salidas y pantallas.

Material necesario

Esquema de conexión

Esquema del proyecto HC-SR04 con OLED

Recuerda comprobar que la pantalla OLED usa la dirección I2C 0x3C, que es la más común.

Código Arduino


#include           
#include 

#define TRIG 9
#define ECHO 10
#define LED 3
#define BUZZER 4

Adafruit_SSD1306 display(128, 64, &Wire);

void setup() {
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  pinMode(LED, OUTPUT);
  pinMode(BUZZER, OUTPUT);

  Serial.begin(9600);

  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("Error OLED");
    while (true);
  }

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
}

long medirDistancia() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);

  long duracion = pulseIn(ECHO, HIGH);
  long distancia = duracion * 0.034 / 2;
  return distancia;
}

void loop() {
  long distancia = medirDistancia();

  display.clearDisplay();
  display.setCursor(0, 0);
  display.print("Distancia: ");
  display.print(distancia);
  display.println(" cm");

  int barra = map(distancia, 0, 50, 128, 0);
  barra = constrain(barra, 0, 128);
  display.fillRect(0, 20, barra, 10, WHITE);

  if (distancia > 30) {
    display.setCursor(0, 40);
    display.print("Estado: LIBRE");
    digitalWrite(LED, LOW);
    digitalWrite(BUZZER, LOW);
  }
  else if (distancia > 15) {
    display.setCursor(0, 40);
    display.print("Estado: CERCA");
    digitalWrite(LED, HIGH);
    tone(BUZZER, 1000, 100);
  }
  else if (distancia > 5) {
    display.setCursor(0, 40);
    display.print("Estado: PELIGRO");
    digitalWrite(LED, HIGH);
    tone(BUZZER, 2000, 200);
  }
  else {
    display.setCursor(0, 40);
    display.print("Estado: CRITICO");
    digitalWrite(LED, HIGH);
    tone(BUZZER, 3000);
  }

  display.display();
  delay(100);
}
      

Paso a paso

1. Instala las librerías necesarias

Desde el gestor de librerías instala Adafruit SSD1306 y Adafruit GFX Library.

2. Realiza las conexiones

Conecta el HC‑SR04, la pantalla OLED, el LED y el buzzer según el esquema.

3. Sube el código

Comprueba que la pantalla responde y que las alertas funcionan según la distancia.

⚡ Consejo: si la pantalla no muestra nada, revisa la dirección I2C (0x3C o 0x3D).