⭐⭐⭐ Reto ⏱️ 25 minutos

Medidor de distancia con barra de luz

Vas a hacer una barra de luz que muestra lo cerca que está algo. Lejos: ninguna lucecita. Cuanto más cerca, más lucecitas se encienden. Primero verde, luego naranja y muy cerca rojo.

Primero inicias sesión un momento. Después tu proyecto está listo enseguida.

🧰 ¿Qué necesitas?

1× Arduino UNO
1× Sensor de distancia HC-SR04
1× Anillo LED RGB (8 LEDs)
🔌
Cable USB + Cables jumper

🗺️ Esquema de conexión

Sigue los cables desde el Arduino hasta cada pieza. Puedes elegir tú los colores de los cables.

Desde Hasta
Arduino UNO · D9 Sensor de distancia HC-SR04 · Trig
Arduino UNO · D10 Sensor de distancia HC-SR04 · Echo
Arduino UNO · 5V Sensor de distancia HC-SR04 · Vcc
Arduino UNO · GND Sensor de distancia HC-SR04 · Gnd
Arduino UNO · D6 Anillo LED RGB (8 LEDs) · DI
Arduino UNO · 5V Anillo LED RGB (8 LEDs) · 5V
Arduino UNO · GND Anillo LED RGB (8 LEDs) · GND

🛠️ Así lo construyes

  1. Conecta el HC-SR04: Trig al pin 9, Echo al pin 10, Vcc a 5V y Gnd a GND.
  2. Conecta el anillo LED: DI al pin 6, 5V a 5V y GND a GND.

💻 El código

// Medidor de distancia con barra de luz
// Cuanto más cerca estás, más lucecitas se encienden: verde, luego naranja, luego rojo.

#include <Adafruit_NeoPixel.h>

const int TRIG_PIN = 9;     // Trig del HC-SR04 en el pin 9
const int ECHO_PIN = 10;    // Echo del HC-SR04 en el pin 10
const int RING_PIN = 6;     // DI del anillo LED en el pin 6
const int NUM_LEDS = 8;
const int DISTANCIA_MAX = 80; // Más lejos que esto (en cm): todas las luces apagadas

Adafruit_NeoPixel anillo(NUM_LEDS, RING_PIN, NEO_GRB + NEO_KHZ800);

long medirDistancia() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  long tiempo = pulseIn(ECHO_PIN, HIGH, 30000);
  if (tiempo == 0) return 999;
  return tiempo / 58;
}

void setup() {
  Serial.begin(9600);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  anillo.begin();
  anillo.setBrightness(40);
  anillo.show();
}

void loop() {
  long distancia = medirDistancia();
  Serial.print(F("Distancia: "));
  Serial.print(distancia);
  Serial.println(F(" cm"));

  // ¿Cuántas lucecitas deben encenderse? Cerca = 8, lejos = 0
  int cantidad = map(constrain(distancia, 0, DISTANCIA_MAX), 0, DISTANCIA_MAX, NUM_LEDS, 0);

  for (int i = 0; i < NUM_LEDS; i++) {
    if (i < cantidad) {
      if (i < 3)      anillo.setPixelColor(i, anillo.Color(0, 255, 0));    // Verde
      else if (i < 6) anillo.setPixelColor(i, anillo.Color(255, 120, 0));  // Naranja
      else            anillo.setPixelColor(i, anillo.Color(255, 0, 0));    // Rojo
    } else {
      anillo.setPixelColor(i, 0);                                        // Apagado
    }
  }
  anillo.show();
  delay(100);
}

🧠 ¿Qué hace el código?

  • medirDistancia() mide la distancia con el HC-SR04.
  • map() convierte la distancia en un número de lucecitas: de 0 a 8.
  • Las primeras 3 lucecitas son verdes, las siguientes 3 naranjas y las últimas 2 rojas.

🎯 Prueba esto…

  • Haz que todas las lucecitas rojas parpadeen si estás a menos de 10 cm
  • Añade el zumbador que pita en rojo
  • Haz el medidor más sensible: todas las lucecitas encendidas a 40 cm en vez de 80 cm

🚀 Construye este proyecto con Codey: abre codey.online/es/starter-kits/uno/projects/distance-light-bar y haz clic en HAZ ESTO. Entonces el código y el esquema de conexión estarán listos enseguida.

Primero inicias sesión un momento. Después tu proyecto está listo enseguida.
⬇️ Descarga esta página como PDF 📚 Descarga el tutorial completo (PDF)

Codey Online es un producto de OTRONIC

Crea tu proyecto de Arduino o ESP32 con IA

Describe lo que quieres construir. Codey Online escribe el codigo, dibuja el esquema de conexiones, lo compila y graba tu placa directamente desde el navegador.

Empieza gratis