Configurar botones y pulsadores en Arduino

Uno de los elementos más utilizados en muchos proyectos con Arduino son los botones pulsadores. Éstos elementos permiten abrir y cerrar el paso de corriente para controlar LED, relés, motores y casi cualquier otra cosa que se te ocurra. En este pequeño tutorial aprenderás a configurar botones y pulsadores en Arduino.

Características de los pulsadores

Los pulsadores están disponibles en el mercado en una gran cantidad de modelos distintos. Uno de los más conocidos son el interruptor tactil, que permite cerrar un circuito de forma momentánea. El modelo al que hacemos referencia lo puedes apreciar en la siguiente imagen:

Pulsador táctil.jpg

Los pines a ambos lados del pulsador hacen contacto dentro de la carcasa. A su vez, el botón posee un trozo de conductor adherido. Cuando se presiona el botón hacia abajo, el circuito se cierra entre los pines de cada lado y la corriente puede fluir entre ellos:

Diagrama de botón pulsador: presionado o no presionado

Configurar un pulsador en Arduino

 

Para que aprendas de forma didáctica a configurar un pulsador en Arduino, vamos a realizar un montaje de un circuito para encender un LED cuando se presione.

Puedes usar este circuito para controlar cualquier dispositivo alimentado por una señal de 5 voltios.

A continuación la imagen muestra el montaje del circuito:

Pulsador LED sin resistencia pull-up.png

 

Puedes utilizar una resistencia de entre 200 y 1.000 ohmios.

Conecta el pulsador en un extremo al PIN de 5 voltios y el otro extremo al pin 7 del Arduino.

Al presionar el pulsador, la corriente fluye al pin 7. Usamos la función digitalRead()para detectar cuando esto sucede.

Luego usamos la función digitalWrite() para enviar una señal ALTA al pin 11, y de esta forma el LED se encienda.

Código para programar el pulsador en Arduino

El código siguien permite poner en funcionamiento el montaje anterior:

int buttonPin = 7;
int ledPin = 11;

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int buttonState = digitalRead(buttonPin);
  digitalWrite(ledPin, buttonState);
}

Las primeras líneas del Sketch declaran dos variables pin. La primera variable denominada buttonPin contiene el número del pin del Arduino al que se ha conectado el pulsador(pin 7).

Luego la variable ledPin contendrá el número de pin del Arduino conectado al LED.

En el cuerpo de  setup(), usamos la función pinMode() para configurar la entrada a buttonPin.

Luego configuramos el ledPin como salida.

En el cuerpo de loop(), se declara una variable entera llamada buttonState y iguala a digitalRead(buttonPin).

Cuando el pulsador esté abierto, el voltaje en buttonPin será bajo, por lo que la función digitalRead()devolverá un valor bajo. El valor bajo se almacena en la variable buttonState.

Cuando se cierre el pulsador, el voltaje en buttonPin será alto y se almacenará un valor alto en la variable buttonState.

La función digitalWrite()permite enviar la señal de voltaje al LED.

Pines flotantes

Muchas veces en montajes como el anterior es probable que el LED parpadee con solo acercar el dedo al pulsador.

El fenómeno anterior se debe a que muchas veces existen campos electromagnéticos débiles en nuestros dedos. Esto debido a que los pines de Arduino son sensibles y estos campos son detectados como una señal de voltaje. Luego son registrados como señales altas por la función digitalRead().

Al fenómeno en que los pines GPIO captan campos electromagnéticos perdidos, se le denominan pines flotantes.

Cuando se da este caso es necesario resolver el problema asegurándonos de que la función buttonPin permanece baja cuando no se presiona el botón.

Resistencias PULL DOWN

La forma más fácil de lidiar con el fenómeno anterior es conectar una resistencia en el lado izquierdo del botón pulsador a tierra, como puedes apreciar en la siguiente imagen:

Pulsador LED con resistencia desplegable.png

 

De esta forma la energía electromagnética perdida fluirá a tierra a través de la resistencia.

Cuando se presiona el botón, la resistencia limitará el flujo de corriente a tierra y la corriente fluirá al pin 7.

El valor de la resistencia pull down puede variar, pero generalmente es superior a 10.000 ohmios.

Resistencias Pull Up

Las resistencias pull up son más comunes que las resistencias pull down.

Éstas últimas están conectadas a una fuente de voltaje y mantienen el pin en un estado de voltaje alto:

Pulsador LED con resistencia pull-up.png

El código para usar una resistencia pull up es el siguiente:

int buttonPin = 7;
int ledPin = 11;

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int buttonState = digitalRead(buttonPin);

  if (buttonState == LOW) {
    digitalWrite(ledPin, HIGH);
  }

  if (buttonState == HIGH) {
    digitalWrite(ledPin, LOW);
  }
}

 

Resistencia Pull Up interna en Arduino

Las resistencias pull up y pull down que hemos visto en este artículo son componentes de circuitos externos.

Arduino también ofrece una resistencia pull up interna que puedes usar para el mismo propósito anterior.

Para usar la resistencia pull-up interna de Arduino, use INPUT_PULLUP como segundo argumento en la función pinMode() para el buttonPin de la siguiente forma:

int buttonPin = 7;
int ledPin = 11;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int buttonState = digitalRead(buttonPin);

  if (buttonState == LOW) {
    digitalWrite(ledPin, HIGH);
  }

  if (buttonState == HIGH) {
    digitalWrite(ledPin, LOW);
  }
}

Ahora puede cablear el circuito sin la resistencia pull-up conectada a 5 voltios. La resistencia pull up interna usa un componente menos y hace que el circuito sea un poco más simple.

Esperamos que este artículo te haya ayudado a configurar botones y pulsadores en Arduino.

Deja un comentario

programar en arduino logo

En este sitio aprenderas a programar en Arduino de forma gratuita a través de sencillos tutoriales y distintos proyectos.