馃挕 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.

Resistencia pull up y resistencia pull down.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 鈥楬IGH鈥 o 鈥楲OW鈥, respectivamente.

En la configuraci贸n con resistencia Pull Up se forzar谩 un estado 鈥楬IGH鈥 cuando el pulsador se encuentre abierto. Sin embargo, cuando el interruptor se encuentre cerrado, la terminal o pin tendr谩 un estado 鈥楲OW鈥 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 鈥楲OW鈥 cuando el interruptor se encuentre abierto. Sin embargo, cuando el interruptor se encuentre cerrado, la terminal o pin pasar谩 a un estado 鈥楬IGH鈥 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.

Clic en la imagen para ampliar.

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

 Clic en la imagen para ampliar.

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 鈥淪i 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 鈥渁utoridad 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 鈫