Hola, tenemos la respuesta a lo que necesitas, continúa leyendo y la obtendrás a continuación.
Solución:
El valor predeterminado es INPUT
que establece el pasador como un INPUT
. Si el pin está totalmente desconectado, leerá aleatoriamente HIGH
y LOW
. Si lo ata a +5V o 0V, obviamente leerá HIGH
o LOW
.
Interno al Arduino, el chip Atmega tiene resistencias pull-up internas con un valor de alrededor de 20k ohm. (Consulte la documentación de DigitalPins para obtener más detalles) Estas resistencias se pueden conectar opcionalmente internamente usando INPUT_PULLUP
. Esto es funcional (y eléctricamente) equivalente a conectar una resistencia de ~20k ohmios entre el pin y +5V, la única diferencia es que no requiere componentes externos y puede encenderlo y apagarlo en el software durante la ejecución de su programa.
Entonces, ¿por qué pull-ups y no pull-downs? Es probable que haya varias razones para ello, pero cuando se conectan botones o interruptores o cualquier cosa “normalmente abierta”, solo tiene que conectarlos a tierra, no necesita ejecutar +5V hacia ellos. Dado que la mayoría de las placas se diseñarán con grandes vertidos de tierra por razones de protección, la conexión a tierra es prácticamente una razón.
Algunos circuitos integrados más destacados, como los chips ARM, tienen pull-ups y pull-downs, pero la línea AVR de 8 bits solo viene con pull-ups. Solo tienes que recordar que HIGH
es “abierto” y LOW
está cerrado”.
Tenga en cuenta que antes de 1.0.1, podía activar los pullups usando digitalWrite()
. Y aún puedes.
El código:
pinMode(13, INPUT);
digitalWrite(13, HIGH); // Turns internal pull-up on
digitalWrite(13, LOW); // Turns internal pull-up off
Esta es una distinción importante porque INPUT_PULLUP
obviamente enciende la resistencia pull-up. Sin embargo, menos obvio es que a partir de 1.0.1, simplemente llamando INPUT
obliga a que el pull-up se apague. (Anteriormente, el estado del pull-up seguía siendo el mismo).
Para ver cómo funciona un pin con y sin pull-ups, mire los siguientes videos.
Pin flotante en un osciloscopio: http://www.youtube.com/watch?v=dBIBFLYCjMM
Con Pull-Up habilitado: http://www.youtube.com/watch?v=SAIw7LLVl-U
Video tutorial completo sobre Pull-Ups (tenga en cuenta que hice esto antes de que se agregara INPUT_PULLUP a la biblioteca de Arduino): http://www.youtube.com/watch?&v=jJnD6LdGmUo
Comentarios y valoraciones
Si para ti ha sido provechoso nuestro post, agradeceríamos que lo compartas con otros entusiastas de la programación y nos ayudes a extender nuestra información.