Programando con pulsadores (Vídeo)

Un pulsador es un actuador de dos estados: encendido y apagado. Lo usaremos para realizar tareas que requieran de un interruptor. Este es el aspecto de un pulsador:

pulsador_2

Como los pulsadores sólo tienen dos estados podemos usar una codificación digital, representando el estado encendido con un 1 y apagado con un 0. Cabe destacar que los pulsadores necesitan una entrada de 5V para funcionar. Así, de las cuatro patillas de las que dispone, una estará conectada a 5V, otra a un pin digital de Arduino y otra a GND. Además, entre la patilla del pulsador y la conexión a GND hay conectada una resistencia de 10K (10.000Ω).

Esquema de montaje

En el esquema de montaje usado el pulsador estará conectado al pin digital 2. Para todos los ejemplos siguientes usaremos el mismo modelo:

pulsador

DigitalReadSerial: Mostrando el estado de un pulsador

En este sketch vamos a leer continuamente el estado del botón (encendido/apagado) y lo mostraremos por el monitor serie.

 

Button: Pulsadores y leds

El código de ejemplo Button comprueba periódicamente el estado del pulsador. Si está accionado, se enciende el led conectado al pin digital 13. En caso de no estarlo, apagamos el led.

 

Debounce: Nada es perfecto

En este apartado vamos a comentar un problemilla de los pulsadores, que es común en la gran mayoría de sensores y actuadores. Todos estos dispositivos requieren un margen de tiempo entre acciones para no ofrecer resultados erróneos. Por ejemplo, imaginemos que estamos usando PWM para dar valores de brillo creciente a un led. Si no dejamos un tiempo entre asignación de valores, no podremos ver correctamente las transiciones.

En el caso de los pulsadores es el mismo que el de los teclados de ordenador. Los pulsadores a menudo generan falsas transiciones encendido/apagado al pulsarlos, debido al funcionamiento físico del pulsador. Así, estas transiciones pueden ser leídas como múltiples pulsaciones en un espacio de tiempo muy breve, llevando a errores a nuestro programa.

En este sketch se trata cómo solucionar este problema de “rebote” (debounce), comprobando el estado durante  un margen de tiempo pequeño para asegurarnos de que el pulsador está definitivamente pulsado. Si no lo comprobamos, analizar el pulsador una sola vez podría generar resultados impredecibles.

En este código aparece por primera vez la función millis(), usada para controlar el tiempo transcurrido desde que se pulsó el botón. El objetivo del programa es resolver el mismo problema que en el sketch Button anterior. Por ello, haremos uso de un led en el pin 13 junto al pulsador.

Quizá el código puede ser algo complicado de entender. Realmente su funciomiento es sencillo:

  • Si detectamos que ha cambiado el estado del pulsador, almacenamos el instante en el que detectamos el cambio.
  • Si ha transcurrido más tiempo que el establecido como “rebote” y hemos detectado un cambio de estado, actualizamos dicho estado con el valor del pulsador leído (buttonState = reading).
  • Finalmente, sólo actualizamos el valor del led si el estado del pulsador es HIGH.

 

StateChangeDetection: Conteo de pulsaciones

En algunos casos nos puede resultar interesante saber cuántas veces se ha pulsado el botón. Para ello, necesitamos detectar cuándo ha cambiado su estado y mantener la cuenta del número de veces. Esto se conoce como detección de cambio de estado.

En este programa, por cada vez que el pulsador pase de estado Apagado a Encendido enviaremos un mensaje al monitor serial con información relevante. Además, cada vez que acumulemos cuatro transiciones Apagado-Encendido cambiaremos el estado del led.

 

Otras consideraciones

Cuando un pulsador está abierto (no presionado), no hay conexión entre las dos patillas. Por ello, el pin está conectado a tierra (a través de la resistencia) y leemos un valor LOW. Cuando el pulsador está cerrado (presionado), establece una conexión entre las dos patillas, conectando el pin al voltaje, por lo que leemos un valor HIGH. Es decir, el pin está todavía conectado a tierra, pero la resistencia mantiene el flujo de corriente, por lo que el camino de menor resistencia es a +5V.

 Si desconectásemos totalmente el pin digital del pulsador, el led parpadearía de forma irregular. Esto se debe a que la entrada está “flotando”, es decir, no está conectada ni a un voltaje ni a tierra. Devolvería de forma más o menos aleatoria un HIGH o LOW. Es por esto por lo que necesitamos una resistencia en el circuito.

Estudiante de Ingeniería Informática en la intensificación de Tecnologías de la Información. Universidad de Murcia.

Redes de Comunicaciones, Seguridad e Internet of Things.

2 opiniones en “Programando con pulsadores (Vídeo)

  • 18 Enero, 2016 a las 15:07
    Link permanente

    Hola, que tal amigos? Muy buena onda la web.
    Como saben que resistencias poner en el circuito? De donde sacan la info?
    Un saludo. Gracias de antemano.

    Responder
    • 7 Abril, 2016 a las 20:35
      Link permanente

      La resistencia que necesita cada componente puedes consultarla en su datasheet. Ahí también puedes ver cosas como el voltaje que necesita y sus características.

      Un datasheet es un documento del fabricante en el que se resume el funcionamiento y las características del componente.

      Espero haberte ayudado.

      Responder

Deja un comentario