ARDUINO: LECTURA DE UN PULSADOR



A continuación vamos a leer un pulsador y por medio de una condición vamos a prender y apagar un led, esta práctica será la base para poder leer cualquier otro sensor con solo dos estados que son ALTO o BAJO y poder utilizarlo dependiendo de nuestras necesidades, abajo se muestra el código, material y explicación de la práctica.

Material:

  • 1x Arduino
  • 1x LED
  • 1x Resistor 220
  • 1x Pulsador de 4 pines o 2 pines
  • 1x Resistor de 10K
  • 1x Protoboard
  • Jumpers

Configuración de montaje empleando las resistencias Pull-Down y Pull-Up

Ahora bien, veremos el correcto montaje del interruptor con las resistencias Pull Up y Pull Down. Cabe mencionar que esta configuración con las resistencias Pull Up y Pull Down es muy común y se empleada en la electrónica, así como en la automatización de procesos.

arduino-pulsador-3.png

La conexión de las resistencias Pull Up y Pull Down se hace con la terminal o pin digital y un voltaje de referencia, para este caso 0 Volts o 5 Volts. Recordemos que la corriente sigue el camino que opone menor resistencia a su paso y dado un solo camino con mayor resistencia la corriente no tiene otra opción más que seguir este camino, es por ello que, dependiendo de la configuración del montaje de las resistencias, éstas fuerzan a un valor de voltaje ‘HIGH’ o ‘LOW’, respectivamente.

En la configuración con resistencia Pull Up se forzará un estado ‘HIGH’ cuando el pulsador se encuentre abierto. Sin embargo, cuando el interruptor se encuentre cerrado, la terminal o pin tendrá un estado ‘LOW’ ya que la corriente es limitada por la resistencia.

En el caso contrario de la configuración con resistencia Pull Down se forzará un estado ‘LOW’ cuando el interruptor se encuentre abierto. Sin embargo, cuando el interruptor se encuentre cerrado, la terminal o pin pasará a un estado ‘HIGH’ ya que la corriente es limitada por la resistencia.

En el esquema que se muestra podemos identificar la configuración de conexión con una resistencia Pull Up y Pull Down, la entrada digital puede considerarse en cualquiera de las terminales o pines digitales de la tarjeta Arduino.

esquema de MONTAJE

A continuación, se presenta el montaje para las dos configuraciones con una tarjeta Arduino y una placa Protoboard.

Nosotros utilizaremos el siguiente montaje para dar continuidad con la práctica:

 

Código

Podemos ver en nuestro circuito que hemos conectado un led al pin 2 y un pulsador al pin 3, en la programación definimos un alias para cada uno respectivamente usando #define, además que al led lo ponemos como salida usando pinMode() , al pulsador como entrada ya que leeremos lo que mande, este pulsador lo hemos conectado en modo de pull-down, esto nos quiere decir que siempre enviará un estado lógico de BAJO estando en reposo y cuando pulsemos enviará un ALTO, este valor se almacenará en la variable Push_lee, pero para leer la señal que el pulsador manda usamos la función digitalRead(), ese valor se almacena en la variable anteriormente mencionada, todo esto dentro de loop ya que es nuestro programa de ejecución, después con el uso de una condicional if tendremos la lógica “Si presionamos el pulsador este enviará un valor lógico ALTO o 1, entonces prende el led si no se pulsa, entonces apaga el led”, por eso el if si tenemos un valor ALTO o 1 en nuestra variable Push_lee y hacemos la comparación, esto ya se ha explicado en el primer capítulo, entonces entra dentro del if y envía un alto al LED y este prenderá, si no entra en el else ya que no se tiene un uno de lectura sino un cero, entonces envía un bajo al LED y este permanece apagado únicamente si no se pulsa el pulsador. Y es así como leemos valores digitales.

#define LED 2 //Damos el alias a nuestro pin 2.
#define Push 3 //Damos el alias a nuestro pin 3.

byte Push_lee = 0;

void setup(){
pinMode(LED,OUTPUT); //Definimos el pin LED como salida.
pinMode(Push,INPUT); //Definimos el pin Push como entrada.
}

void loop(){ 
//Definimos nuestra secuencia.
Push_lee = digitalRead(Push); //Almacenamos en la variable la lectura del pulsador.
 if(Push_lee == 1){ //Condición que si tenemos el valor de 1 entra en el.
  digitalWrite(LED,HIGH); //Se manda un ALTO al LED 
 }else{ //Condición que se cumple si no se cumple el if
  digitalWrite(LED,LOW); //Mandamos un BAJO al LED.
 }
}

En la  práctica "pulsador como interruptor" veremos cómo usar estas lecturas con un poco de lógica de programación para poder hacer que un led permanezca prendido, cabe mencionar que no es necesario que sea un pulsador el que mande la señal, si no puede ser cualquier sensor que solo envíe dos estados, ALTO o BAJO.

NOTA: Aunque la tarjeta Arduino cuenta con resistencias Pull Up internas con un valor de 30 kilo-ohms, no se suelen utilizar por los siguientes motivos:

  • El nivel de autoridad es bajo, lo que significa que el valor de la resistencia es muy alto.
  • Se puede provocar un cortocircuito si la configuración desde la programación es incorrecta, debido a esto se recomienda conectar físicamente la resistencia y así poder verificar la conexión.

¿Cómo elegir la resistencia adecuada?

El valor de la resistencia que requieres depende de dos factores, la intensidad de corriente que circula por el interruptor al ser accionado, así como por el concepto denominado “autoridad del Pull Down-Pull up” que se relaciona con el ruido en la medición.

Lo anterior quiere decir que, una resistencia con un valor muy pequeño tendrá mucha autoridad, aunque permitirá el paso de una mayor corriente, esto se refleja en un mayor consumo y un mayor calentamiento.

Por otro lado, una resistencia con un valor muy grande tendrá poca autoridad, permitiendo el paso de poca corriente y, por ende, obteniendo mediciones incorrectas como consecuencia del ruido.

Ver más sobre resistores