les vencimos · offline

L32. Semáforo

Proyectos guiados (92–97%)

Maestro

Primer proyecto cerrado. Tres luces, un orden, y nada que escuchar. Por eso aquí delay es honesto: el semáforo no atiende un botón. Rojo, ámbar, verde. Cada uno con su resistencia. Ninguno come más de la cuenta del pin, porque son LED, no lámparas de calle.

Pines del curso: rojo en 10, ámbar en 11, verde en 12. Cada LED con 220 ohmios hacia el pin, cátodo a GND. Da igual si la resistencia va del lado del pin o del lado de masa, mientras haya una por LED. No pongas los tres en paralelo con una sola resistencia. Apaga los tres antes de encender el siguiente, para no dejar dos fases a la vez por un descuido.

Tiempos de juguete, para no aburrirte en la mesa: rojo 3 segundos, ámbar 1, verde 3. En una calle serían otros. El programa es una secuencia. Si más adelante quieres un botón de peatón, delay sobra y toca pasar a estados con millis. Hoy no.

Si una luz no enciende, cambia solo ese LED de sitio con otro que sí. Si al cambiar se enciende, el pin o el cable era el fallo. Si sigue apagada, el LED está al revés o sin resistencia bien puesta. No reescribas la secuencia hasta hacer esa prueba.

Montaje

Uno10 rojo11 ámbar12 verdeGNDpin 10 · 220pin 11 · 220pin 12 · 220
Tres LED, tres resistencias de 220, pines 10, 11 y 12. Un solo encendido a la vez. Los tiempos: rojo tres segundos, ámbar uno, verde tres.

Pines de esta lección

Uno R3 · 5 V · mira la serigrafía, no la memoria10rojo11ámbar12verdeGNDlos tres
Ningún LED comparte resistencia. Ninguno va al pin 13, que puede quedarse de testigo si lo quieres, pero el semáforo no lo usa.

Por qué

El semáforo es la primera vez que el programa se parece a un objeto de la calle. Aun así es el mismo oficio: pines de salida, un solo HIGH a la vez, esperas que son el mensaje. Rojo en el 10, ámbar en el 11, verde en el 12. Si los cruzas, el programa está bien y la calle miente. Se mueve el cable o el número, no se discute el color real del LED.

Cada LED con su 220. Un retorno común a GND. Si pones una sola resistencia en el GND común, el brillo cambia al encender más de uno y, el día que enciendas ámbar y rojo juntos, te pasas de corriente o se quedan flojos. La función poner escribe los tres pines cada vez, para que no quede un LED encendido de la fase anterior por olvido.

Los delay de 3000 y 1000 bloquean. En este proyecto no hay botón, así que es lícito. No añadas un pulsador de peatón dentro de estos delay: no lo oirás. Si lo quieres, el semáforo tiene que pasar a millis y a estados, que ya conoces. Es un buen extra, no es obligatorio para dar la lección por hecha.

Colores: el LED rojo no se distingue del ámbar en una foto. En la mesa, enciéndelos uno a uno en setup, un segundo cada uno, la primera vez, y marca los cables. Luego puedes quitar esa presentación.

Práctica

  1. Tres LED, tres filas, tres resistencias de 220, cátodos a GND.
  2. Ánodos, vía la resistencia, a los pines 10, 11 y 12.
  3. Carga. Rojo, ámbar, verde, y otra vez. Nunca dos a la vez.
  4. Cuenta el rojo: tiene que ser claramente más largo que el ámbar.
  5. Intercambia a propósito los cables de 10 y 12. Mira el verde hacer de rojo. Devuélvelos.
  6. Tapa un LED con el dedo y comprueba que los otros siguen su turno. No comparten una sola resistencia.
  7. Déjalo un minuto. Si la placa se reinicia, hay un LED sin resistencia: se apaga y se revisa.

Práctica en la página

En la página el ciclo va más rápido para verlo: rojo, ámbar, verde. El sketch usa 3 s, 1 s y 3 s. La simulación arranca encendida.

Ejemplos resueltos

El ámbar se queda encendido con el verde

Al pasar de fase se enciende el nuevo LED y no se apaga el anterior. Falta escribir LOW, o la función poner no se usa y una rama se olvidó.

Cada cambio pasa por poner, que escribe los tres. No hay un cuarto digitalWrite suelto que deje un HIGH viejo.

El rojo dura lo mismo que el ámbar

Los tres delay quedaron en 1000, copiados. El ciclo es correcto en el orden y mentiroso en el tiempo. En la calle, el ámbar no dura igual que el rojo.

3000, 1000, 3000. El mensaje es la duración, no solo el color.

Soldadura y seguridad

Tres LED en protoboard no se sueldan todavía. Si fijas el semáforo en una caja, suelda cada resistencia en serie con su LED, no una común escondida en el mazo. Placa apagada. Cada soldadura brillante y separada de la vecina.

No hay lámpara de 230 V al final de este semáforo. Es un modelo de mesa. El relé de red no entra en la caja.

En la mesa

Siéntate delante del semáforo y no toques nada durante un ciclo entero. Di el color antes de que cambie. Si fallas, o los tiempos son iguales y no dan pista, o los cables están cruzados. Mira el ámbar: tiene que ser el corto. Un ámbar tan largo como el rojo es un delay copiado, y en la mesa se nota sin abrir el sketch.

Tapa el rojo con un papel. El ámbar y el verde tienen que seguir a su hora. Si al tapar el rojo se apaga otro, comparten resistencia o comparten fila. Cada uno con su 220 es la condición para poder tapar sin efectos raros.

Un minuto seguido sin RESET espontáneo. Si se reinicia, hay un LED sin resistencia y el USB se cansa. Se apaga y se mira cada pata, no se alarga el delay para disimular el reinicio.

Sketch

void setup() {
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
}

void poner(int r, int a, int v) {
  digitalWrite(10, r);
  digitalWrite(11, a);
  digitalWrite(12, v);
}

void loop() {
  poner(HIGH, LOW, LOW);
  delay(3000);
  poner(LOW, HIGH, LOW);
  delay(1000);
  poner(LOW, LOW, HIGH);
  delay(3000);
}

Ejercicio

Monta los tres LED y sube la secuencia. Cronometra un ciclo. Tiene que ser rojo, luego ámbar, luego verde, sin dos encendidos a la vez.

Autoevaluación

1. ¿Por qué en este proyecto delay no es una trampa?

2. ¿Cuántas resistencias hacen falta?

3. Si más adelante hay un botón de peatón, ¿sigue valiendo delay?