Pulsador: cómo usar este simple elemento con Arduino

pulsador

Un pulsador es un botón que permite interrumpir o enviar una señal electrónica. Con este elemento tan simple combinado con otros elementos se pueden crear proyectos para multitud de aplicaciones. El uso de este tipo de pulsadores es muy común cuando se trata de proyectos con Arduino. Y combinando varios de estos botones se puede crear un teclado algo más complejo, aunque ya existen teclados programables para estos usos…

Por cierto, no debes confundir el pulsador con un interruptor. Son cosas totalmente diferentes. La diferencia es que el interruptor o conmutador se activa o desactiva con cada pulsación que se hace sobre él. Mientras que el pulsador solo permanecerá enun estado mientras se está ejerciendo presión sobre él. He comentado que puede enviar o interrumpir, eso es debido a que existen dos tipos fundamentales de pulsadores.

simbolo pulsador

Existen los pulsadores NA o normalmente abiertos y los NC o normalmente cerrados. Esto te sonará también de los relés. Y sí, es exactamente el mismo funcionamiento. Cuando tienes un NC dejará pasar corriente por sus terminales y se interrumpe solo mientras lo estás pulsando. En cambio, el NA no deja pasar corriente cuando no se ejerce presión sobre él y solo la dejará pasar cuando lo pulses.

Sabiendo eso, es casi todo lo que debes saber de un pulsador para comenzar ya su conexión y programación haciendo uso de Arduino. La verdad que es un elemento tan simple que no hay demasiado más que decir de este tipo de pulsadores.

Integración del pulsador con Arduino

circuito con Arduino

La conexión de un pulsador para hacerlo interactuar con Arduino no puede ser más simple. Un ejemplo es el esquema que puedes ver sobre estas líneas. Eso sería todo lo necesario para comenzar  a experimentar. Pero claro, con ese esquema poco puedes hacer. Faltaría que pongas un poco de imaginación para decidir qué es lo que va a controlar ese pulsador. De hecho, si lees frecuentemente hwlibre.es ya habrás visto algunos artículos donde hemos usado pulsadores…

Formas de conectarlo

pull-up y pull-down

Una cosa que sí deberías conocer es el tema del antirebote y la forma de conectar estos pulsadores. Primero vamos a la forma de conectarlos, que ya sabes que puede ser con las resistencias pull-up y pull-down:

  • Pull-Up: con esta configuración de resistencias, cuando se presiona el pulsador, el microcontrolador o Arduino puede ver o leer un cero en ese pin. Es decir, lo interpreta como una señal LOW.
  • Pull-Down: en este caso es lo contrario, podrá leer o recibir una señal 1 o HIGH por el pin conectado.

No lo confundas con el NC o NA, que es otra cosa diferente como ya hemos visto anteriormente. Esto es independiente a lo otro…

Anti-Rebote

Los pulsadores tienen un efecto rebote cuando se pulsan. Es decir, cuando se presiona o suelta se produce una fluctuación en la señal que pasa por sus contactos y podría hacer que se pase de un estado HIGT a LOW o viceversa sin que realmente queramos que ocurra eso. Eso puede producir un efecto indeseado en Arduino y que haga cosas extrañas, como activar un elemento cuando realmente lo que queríamos es apagarlo con el pulsador, etc. Eso se debe a que Arduino interpreta los rebotes como si se hubiera pulsado más de una vez…

Ese efecto negativo tiene solución. Para eso hay que implementar un pequeño condensador en el circuito antirrebote (método por hardware) o por software (modificando el código fuente), tanto si se ha usado una configuración pull-up como pull-down o si es NC o NA. En todos esos casos hay que implementar la solución para evitar estos rebotes.

Por ejemplo, los circuitos pull-up y pull-down con el condensador antirrebote quedarían algo así:

antirrebote

Mientras que el método mediante software podría verse en este snippet de código:

if (digitalRead(pulsador) == LOW) //Comprueba si el pulsador está pulsado
{
presionado = 1; //La variable cambia de valor
}
if (digitalRead(pulsador) == HIGH && presionado == 1)
{
//Realiza la acción deseada
presionado = 0; //La variable vuelve a su valor original
}

Ejemplo de proyecto simple

antirebote con pulsador y Arduino

Una vez aprendido el tema de las formas de conectar nuestro pulsador y del circuito antirrebote, vamos a ver un ejemplo práctico para controlar un LED con el pulsador. El esquema es igualmente simple como puedes ver.

Una vez conectado de forma correcta, lo siguiente es escribir el código en Arduino IDE para programar tu placa y comenzar a experimentar con los pulsadores. Un ejemplo sencillo de código para controlar nuestro circuito sería el siguiente:

//Ejemplo de sketch para controlar el pulsador
int pin = 2;
int estado;
int pulsante = 0;
void setup()

{
pinMode(2,INPUT); //Para leer la pulsación haciéndo ese pin entrada

pinMode(13,OUTPUT);//Para el LED

Serial.begin(9600);
}
void loop()

{
if(digitalRead(2)==HIGH)

{

pin = 2;

antiRebote(); //Llamada a la función antirrebote

}
}
//Función antirrebote por software
void antiRebote()

{
while(digitalRead(pin)==LOW);
estado = digitalRead(13);
digitalWrite(13,!estado);
while(digitalRead(pin)==HIGH);

}


5 comentarios, deja el tuyo

Deja tu comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Marcelo Castillo dijo

    Genial!!! Muchas gracias, he estado construyendo un CNC y paradójicamente los botones han sido lo que mas me ha costado afinar.

  2.   Liliana dijo

    Hola! Consulto como novata, en la conexión con el GND…..el cable negro no debería salir de la línea negativa, que está situada encima de la que se visualiza en el esquema 2 ?

  3.   Giovanni dijo

    Excelente explicación..hace un par de años hice un proyecto de encendido de un automovil y la verdad nunca pude hacer una pulsación correcta Para el encendido ..voy a probar con este método .le agradezco mucho por esta gran ayuda

  4.   omar romero rincon dijo

    Hola, estoy haciendo un proyecto con tres botones y 5 leds con la siguiente secuencia.
    1 push botton manda una señal a 2 leds, que he llamado 1 y 2.
    el segundo pushbotton manda semal a 3 leds, llamados 2,3 y 4.
    mi tercer pushbotton manda señal a otros 3 leds, llamadas 3,4 y 5.

    he logrado hacer esa secuencia, solo tengo un problema, al presionar 2 botones, manda una señal falsa a led que debería permanecer prendido haciendo que este parpadee de forma intermitente, lo he controlado poniéndole un delay (de 2 segundos, que es lo que necesito para que los leds se mantengan prendidos y posteriormente se apague. entonces mi duda es como puedo meter la funcion millis a mi programa, no entiendo como funciona millis, quiero saber si pueden ayudarme haciendo un ejemplo para 3 botones usando millis en cada uno de ellos, necesito millis para poder precionar en cualquier momento los botones sin que se retarde arduino.

    1.    Isaac dijo

      Hola Omar,
      Te recomiendo ver nuestro tutorial de Arduino:
      https://www.hwlibre.com/programacion-en-arduino/
      Y también puedes ver nuestro artículo sobre millis():
      https://www.hwlibre.com/millis-arduino/
      Un saludo.