les vencimos · offline
L11. Pull-up y pull-down
Maestro
La resistencia de pull no es un extra de perfeccionistas. Sin ella el pin flota y el programa ve fantasmas. Pull-up tira hacia arriba cuando nadie manda. Pull-down tira hacia masa. El curso usa la de arriba, la interna, porque no pide otra pieza. Hoy se entiende la otra, para no copiar un esquema al revés.
Un pin flotante no está ni a 5 voltios ni a masa. Cualquier ruido lo mueve y digitalRead cambia solo. La resistencia de pull-up lo deja en alto mientras el pulsador está abierto. Al cerrar el pulsador hacia GND, el pin baja. Por eso apretar es LOW. La resistencia interna del Uno vale del orden de decenas de kiloohmios: bastante para ganar al aire, demasiado débil para alimentar nada.
Pull-down es la imagen en el espejo. Una resistencia física va del pin a GND, y el pulsador va del pin a 5 voltios. Abierto, lees LOW. Apretado, HIGH. También es válido. Gasta una resistencia y, si te equivocas y pones el botón entre 5V y GND sin esa resistencia bien puesta, haces un cortocircuito. Por eso el curso no empieza por ahí.
Mezclar los dos idiomas es el fallo típico: esquema pull-down y programa escrito para pull-up. El botón «va al revés» y parece roto. Antes de cambiar de pulsador, di en voz alta: ¿quién tira del pin cuando está suelto, 5V o GND? Esa frase predice qué valor es el dedo.
No hace falta otro sketch distinto del de la lección del pulsador. Hace falta no contradecirlo. Si un día un módulo trae la resistencia puesta en la placa, no añadas otra a ciegas: mira hacia dónde tira.
Montaje
Pines de esta lección
Por qué
Pull-up significa que, en reposo, el pin está sujeto a 5 V por una resistencia alta, del orden de decenas de miles de ohmios. Casi no circula corriente. Al pulsar a masa, esa resistencia limita el corto y la lectura cae. Pull-down sería sujetar el pin a masa y pulsar hacia 5 V: entonces apretado sería HIGH. Las dos son válidas. Mezclarlas en la cabeza es lo que no vale.
Este curso elige pull-up interno para todos los botones. Una sola manera, un solo significado de LOW. Si un esquema de internet muestra una resistencia a GND y el botón a 5 V, no lo copies encima de un INPUT_PULLUP: el pin quedaría peleando, o el LOW dejaría de significar dedo.
La resistencia interna no sirve para un LED. Es demasiado alta, decenas de kiloohmios, y la corriente se queda en una fracción de miliamperio. Por eso el LED lleva sus 220 ohmios y el botón lleva el pull-up. No son intercambiables.
Si el cable del botón se suelta de GND y el pin sigue en pull-up, la lectura se queda en HIGH para siempre. El programa cree que nadie pulsa. Es un fallo aburrido y frecuente. Se mueve el cable, no el umbral.
Práctica
- Relee el sketch: tiene que decir INPUT_PULLUP, no INPUT a secas.
- Comprueba que no hay resistencia externa en el botón. Si la habías puesto a 5 V, quítala.
- Suelta. El LED del 13 apagado.
- Aprieta. El LED encendido. Di en voz alta: LOW.
- Suelta el cable de GND con el dedo, placa encendida, solo un momento. El LED debe quedarse apagado, firme, no loco.
- Vuelve a poner el cable de GND.
- Escribe en el papel: en este curso, pulsado es LOW. No lo traduzcas en la lección que viene.
Práctica en la página
Suelto se lee HIGH. Pulsado, LOW, y entonces el LED se enciende. La simulación arranca encendida.
Ejemplos resueltos
La resistencia de 220 en el botón
Se reutilizó la resistencia del LED entre el pin 2 y 5 V, y además el código lleva pull-up. El botón a GND sigue funcionando, pero hay dos caminos a 5 V y el gesto ya no se entiende. Si alguien quita el pull-up del código, el 220 seguiría siendo un pull-up externo, muy fuerte, y el pin aguanta, pero no es el circuito de la lección.
Se deja solo el pull-up interno. La resistencia de 220 vuelve al LED, que es su sitio.
Botón a 5 V con pull-up puesto
El pulsador une el pin 2 con 5 V. En reposo el pull-up ya lo tenía a 5 V. Al pulsar, sigue a 5 V. La lectura no cambia nunca. El LED no se entera.
El otro lado del pulsador va a GND. Ahí sí hay un cambio, de HIGH a LOW.
En la mesa
Haz la prueba del cable suelto con calma. Con el programa ya cargado y el LED apagado en reposo, saca solo el lado GND del pulsador. El LED debe seguir apagado, firme. Si se pone a parpadear, el pull-up no está y el pin oye la radio. Vuelve a colocar el cable en un GND de verdad, no en una fila que parece azul y no es el carril. Repite la prueba una vez. La segunda vez tiene que dar el mismo silencio.
Luego, sin cambiar el cable, lee la línea pinMode en voz alta. Tiene que decir INPUT_PULLUP. Si dice INPUT, ya sabes por qué la prueba anterior habría fallado. No añadas una resistencia de 10 k a 5 V para compensar un olvido del código: o usas la interna, que es lo de este curso, o usas la externa, pero no las dos a la vez mientras aprendes.
Termina escribiendo en el margen del sketch, a lápiz en el papel: pulsado, LOW. Tápalo y dilo al día siguiente antes de abrir la página. Si dudas, no cablees un botón nuevo hasta que la frase salga sola.
Ejercicio
Escribe dos líneas: «suelto = …, apretado = …» para el montaje del curso (pull-up interno, botón a GND) y otras dos para un pull-down de verdad. No montes el de 5 voltios si no tienes clara la resistencia.
Autoevaluación
1. ¿Qué lectura da el pin suelto con INPUT_PULLUP?
HIGH.
2. ¿Por qué el curso no empieza con el botón hacia 5 voltios?
Porque sin la resistencia bien puesta es fácil cortocircuitar 5V con GND.
3. Un pin sin pull, al aire, ¿da un cero estable?
No. Flota y la lectura cambia sola.