En este momento estás viendo Clase 2: LEDs externos, resistencias y tu primer semáforo

Clase 2: LEDs externos, resistencias y tu primer semáforo

 Curso: De Arduino al ESP32 — Microcontroladores para Proyectos Reales

Módulo: 1 — Fundamentos Arduino

Nivel: Principiante | Requiere haber completado la Clase 1

Tiempo estimado de lectura: 15–20 minutos


¿Qué vas a aprender en esta clase?

Al terminar esta clase vas a poder:

  • Conectar un LED externo a Arduino usando una resistencia limitadora
  • Calcular el valor de resistencia necesario para proteger un LED
  • Controlar múltiples pines digitales desde el mismo programa
  • Construir y simular un semáforo funcional de 3 colores en Wokwi

1. ¿Por qué necesitamos una resistencia?

En la Clase 1 usamos el LED integrado del pin 13. Ese LED ya tiene una resistencia incorporada en la placa. Pero cuando conectamos un LED externo directamente a un pin de Arduino, necesitamos agregar una resistencia nosotros mismos.

¿Por qué? Porque un LED sin resistencia deja pasar demasiada corriente, se calienta y se quema en segundos. También puede dañar el pin del Arduino.

Un pin digital de Arduino entrega 5V y puede dar como máximo 40 mA de corriente. Un LED típico necesita solo 10–20 mA para encenderse bien. La resistencia se encarga de limitar esa corriente al valor correcto.

💡 Analogía: pensá en la resistencia como una canilla que regula el caudal de agua. Sin ella, el LED recibiría toda la presión de golpe y se rompería.


2. Cómo calcular el valor de la resistencia

Usamos la Ley de Ohm: R = V / I

Para calcular la resistencia necesaria aplicamos esta fórmula:

R = (Vfuente - Vled) / Iled

Donde:

  • Vfuente = tensión del pin Arduino = 5V
  • Vled = caída de tensión del LED (dato del fabricante)
  • Iled = corriente deseada para el LED

Valores típicos de LEDs de 5mm

ColorCaída de tensión (Vled)Corriente típica
Rojo1.8 – 2.2 V10 – 20 mA
Amarillo2.0 – 2.2 V10 – 20 mA
Verde2.0 – 3.5 V10 – 20 mA
Azul / Blanco3.0 – 3.5 V10 – 20 mA

Ejemplo para un LED rojo

Queremos 15 mA de corriente con un LED rojo (Vled = 2V):

R = (5V - 2V) / 0.015A
R = 3V / 0.015A
R = 200 Ω

Como no siempre existe ese valor exacto en el mercado, usamos el valor comercial inmediato superior: 220 Ω. Esto es lo más seguro — nunca uses un valor inferior al calculado.

📌 Regla práctica: para proyectos de aprendizaje, una resistencia de 220 Ω funciona bien con LEDs rojos, amarillos y verdes conectados a 5V. Para LEDs azules o blancos podés usar 150 Ω.


3. Cómo conectar un LED externo

Un LED tiene dos patas de distinto largo:

  • Ánodo (+) → pata más larga → se conecta al pin de Arduino (a través de la resistencia)
  • Cátodo (−) → pata más corta → se conecta a GND

El circuito queda así:

Pin Arduino (D2) ──► Resistencia 220Ω ──► Ánodo LED ──► Cátodo LED ──► GND

El orden importa: la resistencia puede ir antes o después del LED, el resultado eléctrico es el mismo. Por convención se suele colocar entre el pin y el ánodo.


4. La protoboard (placa de pruebas)

Para conectar componentes sin soldar usamos una protoboard. Tiene filas de agujeros conectados internamente:

  • Las columnas de los extremos (marcadas con + y −) son los rieles de alimentación: corren en sentido vertical a lo largo de toda la placa.
  • Las filas del centro (numeradas) están conectadas horizontalmente en grupos de 5 agujeros, separadas por un canal central.
  + – + –        ← rieles de alimentación (verticales)
  ┌────────────┐
│ 1 ● ● ● ● ●│ ← fila 1: los 5 puntos están conectados entre sí │ 2 ● ● ● ● ●│ │ CANAL │ ← canal central (separa las dos mitades) │ 3 ● ● ● ● ●│ └──────────

Regla de oro: dos componentes en la misma fila (del mismo lado del canal) quedan conectados eléctricamente.


5. Controlando múltiples pines — el semáforo

Ahora que sabés conectar un LED, el paso siguiente es controlar varios a la vez. El semáforo usa tres LEDs (rojo, amarillo, verde) conectados a tres pines digitales distintos.

Pines que vamos a usar

LEDPin ArduinoResistencia
RojoD2220 Ω
AmarilloD3220 Ω
VerdeD4220 Ω

Lógica del semáforo

Un semáforo estándar sigue esta secuencia:

  1. Rojo encendido → 5 segundos (vehículos detenidos)
  2. Rojo + Amarillo encendidos → 2 segundos (advertencia: va a cambiar)
  3. Verde encendido → 5 segundos (circulación habilitada)
  4. Amarillo encendido → 2 segundos (advertencia: va a cortarse)
  5. Vuelve al paso 1

6. El código del semáforo

// Semáforo de 3 colores
// Rojo → pin 2 | Amarillo → pin 3 | Verde → pin 4

const int rojo    = 2;
const int amarillo = 3;
const int verde   = 4;

void setup() {
  pinMode(rojo,     OUTPUT);
  pinMode(amarillo, OUTPUT);
  pinMode(verde,    OUTPUT);
}

void loop() {
  // --- ROJO: vehículos detenidos ---
  digitalWrite(rojo,     HIGH);
  digitalWrite(amarillo, LOW);
  digitalWrite(verde,    LOW);
  delay(5000);

  // --- ROJO + AMARILLO: preparando cambio ---
  digitalWrite(rojo,     HIGH);
  digitalWrite(amarillo, HIGH);
  digitalWrite(verde,    LOW);
  delay(2000);

  // --- VERDE: circulación habilitada ---
  digitalWrite(rojo,     LOW);
  digitalWrite(amarillo, LOW);
  digitalWrite(verde,    HIGH);
  delay(5000);

  // --- AMARILLO: aviso de corte ---
  digitalWrite(rojo,     LOW);
  digitalWrite(amarillo, HIGH);
  digitalWrite(verde,    LOW);
  delay(2000);
}

¿Por qué usamos const int?

En lugar de escribir el número 2 directamente en el código, le damos un nombre (rojo). Esto tiene dos ventajas:

  1. El código se lee más fácil: digitalWrite(rojo, HIGH) es más claro que digitalWrite(2, HIGH)
  2. Si cambiamos el pin de conexión, solo modificamos una línea (donde declaramos la constante) en lugar de buscar cada 2 en el código

7. Simulalo en Wokwi

El circuito del semáforo tiene tres LEDs con sus respectivas resistencias conectados a los pines 2, 3 y 4.

👉 Abrir simulación en Wokwi

Para armar el circuito en Wokwi:

  1. Agregá tres LEDs (rojo, amarillo, verde) desde el panel de componentes
  2. Agregá tres resistencias de 220 Ω
  3. Conectá cada resistencia entre el pin correspondiente y el ánodo del LED
  4. Conectá todos los cátodos a GND
  5. Pegá el código y presioná ▶ Play

8. JSON del diagrama Wokwi

Si preferís cargar el circuito directamente sin armarlo a mano, usá este JSON en el archivo diagram.json de tu proyecto Wokwi:

{
  "version": 1,
  "author": "Profe Martín López",
  "editor": "wokwi",
  "parts": [
    { "type": "wokwi-arduino-uno", "id": "uno", "top": 80, "left": 20, "attrs": {} },
    { "type": "wokwi-led", "id": "ledRojo",    "top": 80,  "left": 280, "attrs": { "color": "red"    } },
    { "type": "wokwi-led", "id": "ledAmarillo","top": 160, "left": 280, "attrs": { "color": "yellow" } },
    { "type": "wokwi-led", "id": "ledVerde",   "top": 240, "left": 280, "attrs": { "color": "green"  } },
    { "type": "wokwi-resistor", "id": "r1", "top": 80,  "left": 220, "attrs": { "value": "220" } },
    { "type": "wokwi-resistor", "id": "r2", "top": 160, "left": 220, "attrs": { "value": "220" } },
    { "type": "wokwi-resistor", "id": "r3", "top": 240, "left": 220, "attrs": { "value": "220" } }
  ],
  "connections": [
    [ "uno:2",   "r1:1", "green",  [] ],
    [ "r1:2",    "ledRojo:A",    "green",  [] ],
    [ "ledRojo:K",    "uno:GND.1", "black",  [] ],
    [ "uno:3",   "r2:1", "yellow", [] ],
    [ "r2:2",    "ledAmarillo:A","yellow", [] ],
    [ "ledAmarillo:K","uno:GND.1", "black",  [] ],
    [ "uno:4",   "r3:1", "green",  [] ],
    [ "r3:2",    "ledVerde:A",   "green",  [] ],
    [ "ledVerde:K",   "uno:GND.1", "black",  [] ]
  ],
  "dependencies": {}
}

9. Actividad: modificá el semáforo

Nivel 1 — Cambiá los tiempos:
Ajustá los delay() para simular un semáforo peatonal (más tiempo en rojo, menos en verde).

Nivel 2 — Semáforo peatonal con LED extra:
Agregá un cuarto LED azul en el pin 5 que represente la señal para peatones: se enciende cuando el semáforo vehicular está en rojo y se apaga cuando cambia a verde.

Nivel 3 — Semáforo inteligente:
Investigá la función millis() como alternativa a delay(). ¿Qué ventaja tiene millis() sobre delay() cuando necesitás hacer varias cosas al mismo tiempo?


10. Resumen de la clase

En esta clase aprendiste:

  • Los LEDs necesitan una resistencia limitadora para no quemarse ni dañar el Arduino
  • La fórmula para calcular la resistencia es R = (Vfuente - Vled) / Iled
  • Para proyectos típicos, 220 Ω es el valor estándar para LEDs con Arduino a 5V
  • Un LED tiene ánodo (+) (pata larga) y cátodo (−) (pata corta)
  • Usando const int le damos nombres a los pines para que el código sea más legible
  • Con digitalWrite() y delay() podemos controlar múltiples pines y crear secuencias temporales

11. Glosario de la clase

TérminoDefinición
ResistenciaComponente que limita el flujo de corriente en un circuito
Ley de OhmRelación entre tensión, corriente y resistencia: V = I × R
ÁnodoTerminal positivo del LED (pata larga)
CátodoTerminal negativo del LED (pata corta)
ProtoboardPlaca de pruebas para armar circuitos sin soldar
const intDeclaración de una constante entera en el código
GNDReferencia de tierra (0V) del circuito
220 ΩValor de resistencia estándar para LEDs con Arduino 5V

¿Qué viene en la Clase 3?

En la próxima clase vamos a agregar entradas al circuito: un botón pulsador que le permite al usuario interactuar con Arduino. Aprenderemos a leer el estado de un pin digital, entender el concepto de pull-up y pull-down, y construir un sistema donde el botón controle el semáforo.


¿Tenés alguna pregunta sobre esta clase? Dejá tu comentario abajo 👇

Deja una respuesta