Código de búsqueda

Lección 98-6: Juego de LED sube y baja con Arduino

Lección 98-6: Juego de LED sube y baja con Arduino

El proyecto de LED tipo sube y baja es un ejercicio clásico para principiantes que enseña uno de los conceptos más importantes en la programación de Arduino: hacer que dos salidas se alternen en un ritmo temporizado. Usando solo dos LEDs, dos resistencias y unos cuantos cables de conexión, construirás un circuito en el que un LED verde y un LED rojo se encienden por turnos, imitando el movimiento de arriba y abajo de un sube y baja de parque infantil. Es un montaje sencillo, pero introduce los bloques de construcción fundamentales — definiciones de pines, constantes de temporización y llamadas secuenciales a digitalWrite() — que aparecen en casi todos los sketches de Arduino que escribirás.

dos LEDs con resistencia en protoboard conectados a Arduino
dos LEDs con resistencia en protoboard conectados a Arduino

Debido a que el patrón de sube y baja en realidad es solo "encender una cosa, apagarla, encender la otra cosa, apagarla, repetir", la misma estructura se escala a docenas de usos prácticos. Aquí tienes algunas ideas para despertar tu imaginación:

  • Luces indicadoras alternantes — un par de "seguro / alerta" en un panel de control que se intercambian una y otra vez.
  • Simulación de cruce de ferrocarril — dos lámparas parpadeando alternadamente mientras se acerca un tren.
  • Señal de dirección de dos carriles — una pantalla de flecha de "ve por aquí / ve por allá" para una entrada de coches o un estacionamiento.
  • Decoración navideña — LEDs rojos y verdes intercambiándose para un efecto parpadeante festivo.
  • Base de aprendizaje — las habilidades de temporización y secuenciación que aprendes aquí son las mismas que usarás más adelante para semáforos, luces peatonales y animaciones con múltiples LEDs.

Cómo funciona el efecto sube y baja

Un LED es un diodo que emite luz, y su símbolo es un triángulo que apunta hacia una línea. La línea plana es el cátodo (negativo), y la parte posterior del triángulo es el ánodo (positivo). En un LED físico, la pata más larga es el ánodo y la pata más corta, con el lado plano, es el cátodo. La corriente fluye del ánodo al cátodo, por lo que el ánodo se conecta hacia tu pin de Arduino y el cátodo se conecta a través de una resistencia a tierra (en el video en 02:29).

La resistencia importa. Un LED pequeño típico necesita aproximadamente 2 V a través de él y unos 10 mA de corriente. Si tu Arduino suministra 5 V, los 3 V restantes deben ser absorbidos por la resistencia. Usando la ley de Ohm, R = V / I = 3 V / 0.01 A = 300 Ω. Cualquier valor desde aproximadamente 300 Ω hasta 1000 Ω funcionará — los valores más altos simplemente hacen que el LED sea más tenue (en el video en 03:49).

Para el sube y baja, los dos LEDs están cableados de forma idéntica: cada ánodo va a su propio pin de Arduino, y cada cátodo pasa por su propia resistencia a un riel de tierra compartido. La única diferencia entre los dos es a qué pin están conectados.

Hardware y componentes

  • 1 × placa Arduino (Uno, Nano, Mega o similar)
  • 2 × LEDs — uno rojo, uno verde (cualquier par de colores funciona)
  • 2 × resistencias, de 300 Ω a 1000 Ω (220 Ω o 330 Ω son opciones comunes)
  • 1 × protoboard
  • Cables de conexión (cables DuPont)
  • Cable USB para programación y alimentación

Eso es todo — sin pulsadores, sin potenciómetros, sin sensores. Esta es deliberadamente la lista de componentes más reducida posible para que puedas concentrarte por completo en la lógica del código.

Guía de cableado

Esquema de Arduino para dos LEDs sube y baja
Esquema de Arduino para dos LEDs sube y baja
Cableado de Arduino para dos LEDs sube y baja
Cableado de Arduino para dos LEDs sube y baja

El cableado es simétrico y fácil de seguir. Inserta ambos LEDs en la protoboard. Conecta el ánodo (pata más larga) del LED verde al pin 2 de Arduino y el ánodo del LED rojo al pin 3 de Arduino. Cada cátodo (pata más corta) se conecta a un extremo de su propia resistencia, y el otro extremo de ambas resistencias se une a un riel común que va al pin GND del Arduino (en el video en 27:45).

Debido a que ambos LEDs comparten el mismo riel de tierra, solo se necesita un cable de tierra desde la protoboard de vuelta al Arduino. Los dos cables de señal — uno al pin 2, uno al pin 3 — son las únicas conexiones que cambian entre los dos LEDs.

Explicación del código

El sketch es intencionalmente corto para que cada línea sea significativa. Estas son las partes que realmente querrás ajustar:

Definiciones de pines

const int greenLEDPin = 2;//define un pin para el LED verde
const int redLEDPin = 3;//define un pin para el LED rojo

Estas dos constantes le indican al Arduino a qué pines están conectados los LEDs. Si cableaste tus LEDs a pines diferentes — por ejemplo, pin 8 y pin 9 — este es el único lugar que necesitas cambiar. La palabra clave const significa que el valor es fijo durante la vida del programa y no puede sobrescribirse accidentalmente más adelante.

Constante de temporización

const int ON_TIME = 500;

Este valor único controla cuánto tiempo permanece encendido cada LED, en milisegundos. El valor predeterminado de 500 significa que cada LED está encendido durante medio segundo, por lo que un ciclo completo de verde y luego rojo tarda un segundo. Bájalo a 200 para un parpadeo rápido, o súbelo a 1000 para un ritmo lento y deliberado de un segundo por LED (en el video en 30:17). Como ambos LED comparten esta constante, siempre permanecen sincronizados — el subibaja se mantiene equilibrado.

Configuración

Dentro de setup(), los dos pines se declaran como salidas con pinMode(), y el monitor serie se inicia a 9600 baudios para que puedas ver los mensajes del estado de los LED desplazarse. Esto se ejecuta una vez, cuando la placa se enciende.

El bucle

La función loop() es donde ocurre el subibaja. Realiza cuatro acciones en secuencia: encender el LED verde, esperar ON_TIME milisegundos, apagarlo y luego hacer lo mismo con el LED rojo. Cuando el bucle llega al final, comienza de nuevo desde arriba automáticamente — ese es todo el comportamiento del "subibaja". No hay variable de estado ni condición que verificar, porque el patrón es puramente secuencial.

Proyecto en vivo y demostración

Una vez que se carga el código, verás el LED verde encendido durante medio segundo, luego el LED rojo, luego verde de nuevo, sin fin. Abrir el monitor serie (Herramientas → Monitor Serie, o Ctrl+Shift+M) muestra "Green LED ON" y "Red LED ON" impresos mientras se ejecuta el patrón, lo cual es una forma práctica de confirmar que la sincronización coincide con lo que configuraste.

Intenta cambiar ON_TIME a 200 y volver a cargarlo — los LED cambiarán notablemente más rápido. Ponlo en 1000 y el subibaja se convierte en una alternancia lenta y deliberada. También puedes desconectar el Arduino del USB y alimentarlo con una batería o un adaptador de 5 V; el sketch se ejecuta de forma idéntica porque ya está almacenado en la memoria de la placa.

Proyectos relacionados de este video

Capítulos

  • [00:00] Resumen de los 10 proyectos de LED con Arduino
  • [01:22] Introducción al curso paso a paso de Arduino
  • [02:29] Entendiendo los LED: símbolo, ánodo y cátodo
  • [03:49] Cálculo de la resistencia en serie del LED con la ley de Ohm
  • [27:32] Presentación del proyecto de LED subibaja
  • [27:45] Diagrama de cableado para el proyecto subibaja
  • [28:28] Explicación del código del subibaja
  • [30:06] Demostración del subibaja con diferentes tiempos
  • [30:47] Resumen del proyecto de luz caminante
  • [36:41] Luz caminante controlada por pulsador
  • [42:25] Medidor de barra de voltaje LED con potenciómetro
  • [49:25] Proyecto de semáforo con Arduino

Imágenes

Arduino wiring for two LEDs see saw
Arduino wiring for two LEDs see saw
Arduino schematic for two LEDs see saw
Arduino schematic for two LEDs see saw
330_ohm_resistor
330_ohm_resistor
dos LEDs con resistencia en protoboard conectados a Arduino
dos LEDs con resistencia en protoboard conectados a Arduino
938-Lessson 98-LED-6: Arduino code two LED, See-saw
Idioma: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Archivos📁

Bibliotecas de Arduino (zip)

Manual del Usuario