Cómo conectar pulsador con Arduino

Cómo conectar el pulsador a las entradas digitales y analógicas del Arduino Uno. Le diremos cómo evitar el «chate de contacto» de botón pulsador utilizando la configuración de pines INPUT_PULLUP Arduino y consideraremos el esquema de conexión de uno o más pulsadores a la placa Arduino. Consideraremos las funciones digitalRead y analogRead en el lenguaje de programación C++ de Arduino. ¿Cómo conectar un botón a Arduino?

Para esta actividad necesitaremos:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • botón pulsador;
  • LEDs y resistencias;
  • protoboard;
  • cables de conexion.

Gestión de un pulsador con Arduino

El principal problema de utilizar botones con un microcontrolador Arduino es el «rebote de contacto», véase la ilustración siguiente. El hecho es que los contactos mecánicos de los botones pulsadores nunca se cierran ni se abren instantáneamente. Los contactos se cierran y abren repetidamente en milisegundos (periodo t en el diagrama), por lo que el microcontrolador recibe una serie de impulsos en lugar de una única señal.

Gestión de un pulsador con Arduino
Gestión de un pulsador con Arduino

Para evitar que el microcontrolador Arduino pulse el botón pulsador, se utilizan varios circuitos eléctricos con disparadores y condensadores. Pero es mucho más conveniente y fácil usar un método de software para prevenir posibles clicks de botones usando un retardo delay Arduino de unos pocos milisegundos o usando la librería Bounce2.h para prevenir falsas pulsaciones de botón para el microcontrolador Arduino.

Cómo conectar un pulsador con resistencia pull-up

Conexión un pulsador con resistencia pull-up
Conexión un pulsador con resistencia pull-up

En el primer ejemplo, utiliza los puertos digitales de la placa para conectar el botón de la resistencia pull-up y el comando digitalRead para leer los datos. Monta el circuito como se muestra en la figura anterior y carga el boceto. Tenga en cuenta que cuando se suelta el botón, se envía un «0» lógico al pin 2. Utilice este botón para encender y apagar el LED integrado conectado al puerto digital 13 de la placa microcontroladora Arduino.

Programa Arduino para pulsador con resistencia

void setup() {
   pinMode(13, OUTPUT);
   pinMode(2, INPUT);
}

void loop() {
   // a la lógica "1", enciende el LED
   if (digitalRead(2) == HIGH) {
      digitalWrite(13, HIGH);
   }
   // a la lógica "0", apaga el LED
   if (digitalRead(2) == LOW) {
      digitalWrite(13, LOW);
   }
}

Explicación del código para pulsador Arduino con resistencia:

  1. el procedimiento de configuración se ejecuta una vez, el procedimiento se utiliza para configurar los puertos en el microcontrolador (asignación del modo de funcionamiento del puerto);
  2. las constantes: INPUT, OUTPUT, LOW, HIGH, deben escribirse en mayúsculas, de lo contrario el compilador no los reconocerá y dará un error de compilación.

Cómo conectar un botón pulsador con el LED

Conexión un botón pulsador con el LED
Conexión un botón pulsador con el LED

También es posible conectar los botones a la entrada analógica del Arduino (etiquetada como Analog In en la placa). La diferencia fundamental de este circuito es el uso del puerto analógico del microcontrolador. También utilizaremos el LED de la placa Arduino para encender y apagar el LED. Conecta el boton pulsador a la entrada analógica A1 como se muestra en el diagrama anterior y carga el siguiente código en la placa Arduino.

Programa Arduino para botón pulsador con el LED

void setup() {
   pinMode(13, OUTPUT);
   pinMode(A1, INPUT);
}

void loop() {
   // si se pulsa el botón, se enciende el LED
   if (analogRead(2) > 300) {
      digitalWrite(13, HIGH);
   }
   // si se suelta el botón, se apaga el LED
   if (analogRead(2) < 300) {
      digitalWrite(13, LOW);
   }
}

Explicación del código para botón pulsador Arduino con el LED:

  1. en este sketch usamos la función analogRead para leer valores de una entrada analógica y el puerto A1 puede usarse como entrada digital;
  2. los valores de la entrada analógica pueden variar (en función de la resistencia del circuito).

Conectar el pulsador al Arduino sin resistencia

Conectar el pulsador al Arduino sin resistencia
Conectar el pulsador al Arduino sin resistencia

El comando pinMode() puede utilizar el modo de funcionamiento INPUT_PULLUP para configurar el puerto del microcontrolador, como se muestra en este ejemplo. En este caso, se conecta una resistencia pull-up de 5V al pin, lo que permite conectar los botones al Arduino sin resistencia. El siguiente programa implementa la capacidad de leer las pulsaciones del botón pulsador con las que se aumentará o disminuirá la variable.

Programa Arduino para pulsador INPUT_PULLUP sin resistencia

int x;

boolean button1WasUp = true;
boolean button2WasUp = true;

void setup() {
   pinMode(2, INPUT_PULLUP);
   pinMode(3, INPUT_PULLUP);
   Serial.begin(9600);
}

void loop() {
   boolean button1IsUp = digitalRead(2);
   boolean button2IsUp = digitalRead(3);

   // si se ha pulsado el botón 1, se incrementa la variable "x"
   if (button1WasUp && !button1IsUp) {
     delay(10);
     button1IsUp = digitalRead(8);
     if (!button1IsUp) { x = x + 1; Serial.println(x); }
   }
   button1WasUp = button1IsUp; // memorizar el estado del botón 1

   // si se ha pulsado el botón 2, reducir la variable "x"
   if (button2WasUp && !button2IsUp) {
     delay(10);
     button2IsUp = digitalRead(10);
     if (!button2IsUp) { x = x - 1; Serial.println(x); }
   }
   button2WasUp = button2IsUp; // memorizar el estado del botón 2
}

Explicación del código para pulsador sin resistencia:

  1. la función delay(10); necesaria en el programa para eliminar los efectos del rebote de los contactos y la falsa activación de los botones;
  2. la variable x se mostrará en el monitor del puerto cuando se pulse el botón.

Conclusión. En este resumen hemos visto la conexión del pulsador con resistencia y el LED al Arduino Uno. Una conexión más interesante, que utiliza el modo INPUT_PULLUP, se describe en el proyecto Descifrar el código y Guirnalda de Navidad con cuenta atrás. Si aún tienes preguntas sobre esta reseña, déjalas en los comentarios de este post.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *