En este artículo vamos a ver como deberíamos utilizar pulsadores en Arduino. Aunque parece una tarea bastante sencilla, veremos que en la práctica hay que tener en cuenta ciertos factores para que nuestro pulsador funcione correctamente.
Lo primero es distinguir un interruptor pulsador del resto, ya que existen muchos tipos de interruptores. El que vamos a ver aquí es del tipo pulsador lo que indica que necesitamos mantener una presión sobre él para que funcione. Por norma general, los pulsadores tienen un estado inicial donde no permiten pasar la corriente.
Existen otros tipos de interruptores como los que tenemos en casa, donde tenemos dos estados a modo de conmutador, podemos dejar fijo un estado sin que esto requiera una acción por nuestra parte.
Indice de contenidos
Pulsadores, el componente eléctrico
El pulsador tiene cuatro patillas que están conectadas a pares como se ve en el siguiente esquema.
Cuando pulsamos el interruptor se cierra el circuito y dejamos pasar la corriente. Esto nos permite, por ejemplo, controlar un LED, un motor o cualquier otro elemento. La duda surge cuando dejamos la patilla donde está conectado ese elemento al aire es decir, sin estar conectado a nada.
Circuito eléctrico con pulsadores
Pongamos un ejemplo, vamos a trabajar con el LED que viene integrado dentro de la placa de Arduino y que está conectado al pin 13. Te muestro a continuación el esquema.
Programando pulsadores con Arduino
El código que debes cargar en la placa es el siguiente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
/* Creado: Luis del Valle (ldelvalleh@programarfacil.com) https://programarfacil.com */ // Constantes para definir los pines const int pulsadorPin = 2; const int ledPin = 13; int valorPulsador = 0; void setup() { // Activamos los pines de entrada y salida pinMode(pulsadorPin, INPUT); pinMode(ledPin, OUTPUT); } void loop() { // Leemos el valor del pin valorPulsador = digitalRead(pulsadorPin); // Encendemos o apagamos el pin del LED según convenga if (valorPulsador == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } } |
Si lo pruebas comprobarás que no funciona correctamente, probablemente el LED integrado dentro de la placa parpadeará o se mantendrá encendido, tiene un comportamiento inestable por no estar conectado a ninguna tensión, esto se conoce como alta impedancia. Para conseguir que el LED quede en un estado determinado cuando el pulsador esté abierto, debemos hacer uso de las resistencias Pull-up y Pull-down.
Aplicando resistencia pullup y pulldown con pulsadores
Estos dos tipos de resistencias nos aseguran que cuando el interruptor esté abierto tengamos un valor HIGH (5V) o LOW (0V), pero ¿cómo lo hacen?
Empecemos por el caso de la resistencia pull-down. En este caso el LED (en la figura se muestra como Vout) tiene dos vías de escape. Por un lado podemos tomar como referencia la conexión que está al aire en el pulsador, recuerda que la hemos llamado de alta impedancia, o puede ir a la resistencia que está conectada a tierra. ¿Qué camino cogerá?
Tienes que pensar que en este caso, al tener una alta impedancia, sería como un muro a la hora de decidir el camino, por lo tanto se verá obligado a tomar como referencia el camino de la resistencia, el que tiene menor diferencia de potencial, está conectado a tierra (0V).
Esta es la configuración recomendada cuando queremos tener un valor HIGH al presionar el pulsador y un valor LOW al dejar de presionar el pulsador, el uso común.
Por otro lado, en la resistencia pull-up ocurre lo contrario. Mientras el pulsador esté sin presionar, la referencia que tomará el LED será de 5V, cuando se presiona el pulsador, la referencia que toma el LED es 0V debido a que está conectado a tierra.
Circuito eléctrico con pulsadores y resistencia pulldown
Veamos como debemos de conectar nuestro LED en Arduino.
La resistencia que se ha utilizado y que debemos utilizar es de 10K ya que así evitamos que tenga influencia sobre el circuito. El código sería exactamente igual, la única diferencia es que ahora funciona correctamente, cuando el pulsador no está presionado el LED está apagado y cuando está presionado se enciende el LED.
Circuito eléctrico con pulsadores y resistencia pullup
Si lo que queremos es tener el LED siempre encendido y que sólo se apague cuando pulsamos, debemos utilizar la resistencia pull-up. El esquema sería el siguiente.
La resistencia seguirá teniendo el mismo valor que en la configuración pull-down y el código será el mismo. Si lo pruebas ahora en tu Arduino comprobarás que se ha invertido el funcionamiento.
Con esto queda comprobado que podemos modificar el comportamiento de nuestro circuito a base de elementos electrónicos y no solo por software. Lo realmente interesante es darnos cuenta de las posibilidades que nos brinda la electrónica y la programación.
Dentro de poco veremos un artículo donde trabajaremos con este concepto y seremos capaces de leer varios pulsadores con una única entrada analógica. Haremos uso de las resistencia pull-down para poder conseguirlo, hasta entonces, sigue practicando.