les vencimos · offline
L07. pinMode, digitalWrite, delay
Maestro
El sketch tiene dos casas. setup se ejecuta una vez, al arrancar. loop se repite siempre. Para encender el LED del pin 13 hacen falta tres órdenes: decir que el pin es de salida, ponerlo alto o bajo, y esperar. Hoy el LED es el de la propia placa, para no pelearte aún con el cable.
pinMode(13, OUTPUT) avisa al chip de que ese pin va a empujar tensión, no a escuchar. Sin eso, digitalWrite no se comporta como crees. digitalWrite(13, HIGH) pone el pin alto, cerca de 5 voltios en el Uno, y el LED de la placa se enciende. LOW lo apaga. delay cuenta milisegundos y, mientras cuenta, el programa no sigue. delay(1000) es un segundo.
El pin 13 suele llevar ese LED ya montado. Sirve para probar. No lo des por libre si en el mismo circuito quieres otro LED u otra señal en el 13: estarías compartiendo la patilla con la luz de la placa. Para el primer parpadeo es justo lo que queremos.
Subir el sketch al Uno es trabajo del entorno, y el detalle vive en Software. Aquí el contrato es otro: cuando el programa ya corre, setup prepara y loop no termina. Si escribes código fuera de esas dos funciones, o te olvidas el punto y coma, no llega a la placa. El ejemplo de abajo es el mínimo que debe compilar.
Montaje
Pines de esta lección
Por qué
pinMode(13, OUTPUT) dice que ese pin empuja: o cerca de 5 V, o cerca de 0 V. Sin esa línea, digitalWrite escribe en un pin que sigue siendo entrada y casi no hay fuerza para encender un LED externo. El LED de la propia placa a veces se intuye igual, y confunde.
digitalWrite(13, HIGH) pone el pin a 5 V en el Uno. LOW lo pone a masa. No son verdadero y falso abstractos: son los dos voltajes. delay(1000) detiene todo el chip durante un segundo, también la capacidad de leer un botón. De momento no hay botón, así que la pausa es honesta. Más adelante molesta, y se cambia por millis.
setup corre una vez. loop corre siempre. Si pones el pinMode dentro de loop funciona, pero esconde la idea. Si pones el parpadeo dentro de setup, parpadea una vez al cargar y se queda en el último estado mientras loop, vacío, da vueltas.
El monitor serie aún no se usa. El resultado de esta lección es luz, no un número. Si necesitas saber si el programa vive, mira el LED. Los pines 0 y 1 siguen libres de cables.
Práctica
- Copia el sketch de la lección tal cual, con el 13.
- Pulsa el botón de cargar del entorno. Espera a que diga que terminó, sin desenchufar a medias.
- Cuenta un segundo encendido y un segundo apagado en el LED de la placa.
- Cambia solo el primer delay a 200. Carga otra vez. El encendido debe ser un golpe corto.
- Vuelve a dejar 1000 y 1000. Carga. Tienes que reconocer el ritmo original.
- Quita el USB y vuelve a ponerlo. El programa no se escribe otra vez: debe seguir el ritmo solo.
- Si no carga, mira el cable y que la placa elegida en el entorno sea el Uno. No cambies pines para arreglar un fallo de carga.
Práctica en la página
El 13 se enciende un segundo y se apaga un segundo. La simulación arranca encendida.
Ejemplos resueltos
Solo se enciende una vez
El parpadeo está escrito en setup, y loop está vacío. Al cargar, el LED hace un ciclo y se queda quieto. RESET lo repite una vez.
Se mueve el parpadeo a loop. setup se queda con pinMode. Al pulsar RESET el ritmo no se acaba.
Se cambió el pin en el texto y no en el cable
Para probar, se escribe pin 12 en pinMode y en digitalWrite, pero el LED sigue en el agujero 13. El 12, sin cable, obedece en silencio. El 13 se queda apagado.
O se devuelve el texto al 13, o se mueve el cable al 12 y se mantiene la resistencia. Las dos cosas a la vez. Nunca una sola.
En la mesa
Escribe el sketch tú, no lo pegues, aunque esté en la página. El acto de teclear pinMode y los dos digitalWrite hace que el 13 deje de ser un número abstracto. Carga. Cuenta diez encendidos. Si cuentas nueve y un trozo, el delay no es mil. No corrijas el cable: corrige el número, carga otra vez, y cuenta de nuevo. El cable, si el LED de la placa obedece, está de más en esta discusión.
Pulsa RESET en la placa, el botón pequeño, no el del ordenador. El ritmo debe retomarse desde el principio, con setup otra vez. Si RESET no hace nada, estás mirando un LED que no es el del programa, o la placa ni siquiera está corriendo. Es la prueba más barata de que el chip se ha reiniciado y ha vuelto a ejecutar tu texto.
Cuando el ritmo sea aburrido de lo estable, para. El aburrimiento aquí es la nota de aprobado. Un parpadeo que a veces se salta un golpe es un contacto, no una poesía. Se aprieta el USB y se vuelve a contar.
Sketch
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Ejercicio
Copia el sketch y cámbiate solo el tiempo: que esté encendido medio segundo y apagado medio segundo. Si aún no puedes subirlo, deja el archivo escrito y anotado.
Autoevaluación
1. ¿Cuántas veces se ejecuta setup?
Una, al arrancar.
2. ¿Qué unidad usa delay?
Milisegundos. delay(1000) espera un segundo.
3. ¿Por qué el primer LED es el del pin 13?
Porque la placa ya lo trae soldado, y ese pin no hay que darlo por libre si luego quieres otra cosa ahí.