Introducción
¿Alguna vez has querido construir un semáforo pero no tenías los componentes a mano? Con Velxio, puedes simular un semáforo completo basado en Arduino directamente en tu navegador. Este proyecto utiliza tres LEDs (rojo, amarillo, verde) conectados a un Arduino Uno para imitar la secuencia clásica de un semáforo: rojo → amarillo → verde → amarillo → rojo. Es un proyecto perfecto para principiantes para aprender sobre salidas digitales, temporización y lógica secuencial.
Explicación del circuito
Veamos el circuito. El diagrama siguiente muestra el cableado completo:

Componentes
- Arduino Uno – el cerebro de la operación.
- LED rojo – conectado al pin digital 13.
- LED amarillo – conectado al pin digital 12.
- LED verde – conectado al pin digital 11.
- Resistencias – cada LED necesita una resistencia limitadora de corriente (típicamente 220Ω) en serie con su ánodo. En Velxio, los LEDs integrados ya tienen resistencias internas, por lo que no es necesario añadirlas manualmente.
Detalles del cableado
Cada LED tiene dos patas: ánodo (pata más larga, marcada como pin “A”) y cátodo (pata más corta, marcada como pin “C”). El cableado es sencillo:
- LED rojo: Ánodo al pin 13 de Arduino mediante un cable rojo (
#ff0000). Cátodo a GND de Arduino mediante un cable negro. - LED amarillo: Ánodo al pin 12 de Arduino mediante un cable amarillo (
#ffaa00). Cátodo a GND. - LED verde: Ánodo al pin 11 de Arduino mediante un cable verde (
#00ff00). Cátodo a GND.
Los tres LEDs comparten la misma conexión a GND en el Arduino. Esto es una configuración de tierra común.
Explicación del código
Ahora examinemos el código que hace que las luces cambien. Abre el editor de código en Velxio:

// Traffic Light Simulator
// Red -> Yellow -> Green -> Yellow -> Red
const int RED_PIN = 13;
const int YELLOW_PIN = 12;
const int GREEN_PIN = 11;
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(YELLOW_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
}
void loop() {
// Red light
digitalWrite(RED_PIN, HIGH);
delay(3000);
digitalWrite(RED_PIN, LOW);
// Yellow light
digitalWrite(YELLOW_PIN, HIGH);
delay(1000);
digitalWrite(YELLOW_PIN, LOW);
// Green light
digitalWrite(GREEN_PIN, HIGH);
delay(3000);
digitalWrite(GREEN_PIN, LOW);
// Yellow light again
digitalWrite(YELLOW_PIN, HIGH);
delay(1000);
digitalWrite(YELLOW_PIN, LOW);
}
Cómo funciona
- Definiciones de pines: Definimos constantes para los tres pines:
RED_PIN = 13,YELLOW_PIN = 12,GREEN_PIN = 11. Coinciden con el cableado. - Configuración: En
setup(), configuramos los tres pines comoOUTPUTusandopinMode(). Esto le indica al Arduino que envíe voltaje a través de estos pines. - Bucle: La función
loop()se ejecuta para siempre. Sigue esta secuencia:- Enciende el LED rojo (
HIGH), espera 3 segundos, lo apaga (LOW). - Enciende el LED amarillo, espera 1 segundo, lo apaga.
- Enciende el LED verde, espera 3 segundos, lo apaga.
- Vuelve a encender el LED amarillo, espera 1 segundo, lo apaga.
- Luego el bucle se repite desde la luz roja.
- Enciende el LED rojo (
Esto crea el patrón familiar de un semáforo.
Conceptos clave para estudiantes
- Salidas digitales:
digitalWrite(pin, HIGH)establece un pin a 5V (encendido),LOWlo establece a 0V (apagado). - Temporización con
delay():delay(milisegundos)pausa el programa. Ten cuidado: mientrasdelay()se ejecuta, el Arduino no puede hacer nada más. - Lógica secuencial: El orden de las operaciones importa. El código se ejecuta línea por línea, por lo que las luces cambian en una secuencia predecible.
- Tierra común: Todos los LEDs comparten la misma conexión a tierra. Esto es típico en circuitos digitales.
Errores comunes y consejos de depuración
- Números de pin incorrectos: Verifica que los números de pin en el código coincidan con el cableado. Si el LED rojo está en el pin 13 pero escribiste
12, no se encenderá. - Orientación del LED: Los LEDs están polarizados. El ánodo (pata larga) debe conectarse al pin de Arduino, y el cátodo (pata corta) a GND. En Velxio, el componente LED está orientado correctamente por defecto.
- Resistencias faltantes: En la vida real, usa siempre una resistencia limitadora de corriente (220Ω–1kΩ) en serie con cada LED para evitar daños. Los LEDs integrados de Velxio incluyen resistencias, pero si usas componentes personalizados, añádelas.
delay()bloquea: Si quieres añadir botones o sensores más adelante,delay()congelará el programa. Considera usarmillis()para temporización no bloqueante.
Extensiones sugeridas
Una vez que tengas el semáforo básico funcionando, prueba estas mejoras:
- Añade un botón peatonal: Usa un pulsador para solicitar una señal de cruce. Al presionarlo, el semáforo cambia a rojo, luego se enciende un LED blanco (paso de peatones).
- Usa
millis()en lugar dedelay(): Reescribe el código para usarmillis()para la temporización. Esto permite que el Arduino detecte pulsaciones de botones mientras espera. - Añade un zumbador: Conecta un zumbador piezoeléctrico a un pin y haz que suene cuando la luz verde esté a punto de volverse amarilla.
- Simula un paso de peatones: Añade dos LEDs más (rojo y verde) para un cruce peatonal y coordínalos con el semáforo.
Pruébalo tú mismo
¿Listo para construir tu propio semáforo? Abre el ejemplo en Velxio y empieza a experimentar:
Abrir ejemplo de semáforo en Velxio
Puedes editar el código, cambiar la temporización o añadir más LEDs. El simulador se ejecuta completamente en tu navegador — sin descargas, sin hardware. Usa la barra de herramientas para compilar y ejecutar tu código:


Si necesitas añadir nuevos componentes, abre el selector de componentes:

Y si quieres usar librerías, el Gestor de Librerías está a solo un clic de distancia:

¡Feliz simulación!