Uno de los problemas que podemos encontrarnos al trabajar con Arduino es el «ruido electrónico» que puede afectar a las lecturas en los pin de nuestra placa, produciendo falsos estados.
No son un tipo de resistencia especial, sino una forma de conectar las resistencias en el circuito de forma que evitemos los falsos estados que pueden producirse como consecuencia del ruido generado en los circuitos electrónicos. Se suelen usar resistencias de 10kΩ.
En el trabajo con pulsadores se hace muy necesario el tener en cuenta este fenómeno, que puede hacer que nuestro circuito no funcione como debiera. Debemos ser cuidadosos en este aspecto. Podemos ver a continuación un vídeo de un circuito sin resistencia que defina el estado inicial del pin digital 13 de Arduino que controla el LED integrado en la placa.
Como podemos ver, el funcionamiento del circuito es errático. Al pulsar se queda encendido el LED aunque reiniciemos el programa en Arduino.




En los estados de reposo, cuando el pulsador está abierto, cada esquema nos garantiza un valor determinado en el pin digital de Arduino. Cuando accionamos el pulsador, la corriente recorrerá el camino más fácil, donde no hay resistencia.
- La resistencia Pull Up nos proporciona un valor HIGH en la entrada digital de Arduino cuando el pulsador está abierto y LOW cuando está pulsado.
- La resistencia Pull Down nos proporcionará un valor LOW en el pin digital de Arduino cuando el pulsador está abierto (que suele ser el montaje más habitual) y HIGH cuando está pulsado.
Un ejemplo de código para encender el LED conectado al pin 13 integrado en la placa a través de un pulsador con resistencia pull down sería el siguiente:
/* Creador:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. */ //Definimos una variable para almacenar el estado del pulsador int valorPulsador=0; void setup() { //Definimos los pines de entrada y de salida pinMode(6,INPUT); pinMode(13, OUTPUT); } void loop() { // Leemos el valor del pin del pulsador valorPulsador=digitalRead(6); //Encendemos o apagamos el pin del LED if(valorPulsador==HIGH) { digitalWrite(13,HIGH); } else { digitalWrite(13,LOW); } }

A continuación un pequeño vídeo del funcionamiento de este circuito que enciende un LED a través de un pulsador usando una resistencia Pull Down.
Y otro circuito que apaga un LED a través de un pulsador usando una resistencia Pull Up. (El sketch de Arduino es el mismo).


