Entradas digitales con botones (Previsualizar)

esquema-conexion-2botones-led-Arduino
Primero debes completar Monitor Serie antes de ver esta lección

Introducción

Los botones son unos componentes muy simples. Cuando presionas un botón estás uniendo dos contactos dando lugar a que la corriente pueda fluir por ellos. Igual que si conectaras y desconectaras un cable.

Por ejemplo, si construimos un circuito con una pila, un botón y un LED, su esquema sería:

esquema-pila-botón

Cuando el botón está relajado, el circuito está abierto, por lo que la corriente no puede fluir de la pila al LED. Es equivalente a desconectar el cable:

esquema-pila-hueco boton

Si, por el contrario, el botón está presionado, el circuito está cerrado, de forma que la corriente puede fuir de la pila al LED. Es equivalente a conectar un cable entre ambos:

esquema-pila-sin-boton

El pequeño pulsador que vamos a usar en esta unidad tiene cuatro conexiones, cuatro pines, los cuales pueden ser un poco confusos. Realmente, en el interior del botón, sólo hay dos conexiones eléctricas A-D y B-C.

esquema-boton-mini

Esto quiere decir que A y D son el mismo punto eléctrico, por lo que conectarlo a uno u otro es lo mismo, y todo lo que conectes a cualquiera de los dos estará conectado entre sí. Lo mismo ocurre con B y C.

Vamos a aprender a usar botones para enviar órdenes a nuestro Arduino.

Explora

¿Por qué hay que usar una resistencia con el botón?

Ya hemos visto que los pines digitales de Arduino pueden configurarse como salidas, y así decidir si ponerlos a 5V (nivel alto) o 0V (nivel bajo) para encender y apagar un LED. Estos pines digitales también pueden funcionar como entradas, de forma que nuestro Arduino puede leer si en ese pin hay 5V o 0V. El circuito que tenemos que construir utiliza un botón para poner un pin digital de Arduino a 5V y 0V según esté presionado o no.

Lo primero que podríamos hacer es poner un botón entre el pin digital y 5 voltios.

boton-pin-5v

En este caso, cuando el botón está presionado, Arduino detecta 5V en su entrada digital (el botón está pulsado, está “encendido”).

boton-cerrado-pin-5v

Pero, ¿qué ocurre cuando está relajado?

boton-abierto-pin-5v

El pin de Arduino queda completamente desconectado. Esto deja el pin “flotando”, lo que quiere decir que cuando leamos su estado no podemos garantizar que esté a nivel alto o bajo. Para solucionar este estado, hay que “tirar” del pin hacia 0V. Esto se consigue con una resistencia entre el pin y 0V (GND).

boton-pin-pulldown

La corriente siempre fluye por donde menor resistencia encuentra. Cuando el botón está presionado el pin se conecta directamente a 5V, por lo que la corriente fluye entre estos dos puntos y Arduino lee este valor. Sin embargo, cuando el botón está relajado no hay camino posible entre 5V y el pin, por lo que la corriente solo puede fluir por GND, haciendo que Arduino lea 0 voltios en su pin.

boton-pin-corrientes

De esta forma, cuando presionamos el botón, Arduino lee “nivel alto”. Mientras que, cuando lo dejamos relajado, lee “nivel bajo”. También podemos cambiar este comportamiento intercambiando la resistencia y el botón.

Estas resistencias que “tiran” de un punto eléctrico hacia 0 o 5V se llaman pull-down y pull-up respectivamente. Puedes usar resistencias de 1k a 10k, aunque este rango no es estricto. Valores comunes pueden ser 1k, 1.8k, 4.7k, 5.6k y 10k.

boton-pin-pullup

De esta forma la lectura de nivel alto se corresponde con un estado alto del botón (pulsado), y cuando lo soltamos Arduino lee nivel bajo (relajado). Ambas formas son válidas y puedes elegir la que más te convenga. En estos ejercicios utilizaremos esta última pull-down.

Conectado un botón a Arduino (pull-down)

Vamos a realizar un circuito en el que Arduino lee el estado del botón y actúa para encender y apagar el LED.

Para probar un botón con Arduino, conectamos los componentes de forma similar al esquema siguiente:

conectar un botón y Arduino

Circuito LED:

  1. Colocamos el LED en la zona central de la breadboard.
  2. Conectamos el LED a la resistencia. Para ello, insertamos una de las patas de la resistencia a la misma columna en la que está a pata más larga del LED. La otra pata de la resistencia la podemos colocar en cualquier otra columna cercana.
  3. Conectamos el LED al pin 8. Insertamos un cable (amarillo) desde la última pata de la resistencia que hemos pinchado en la breadboard (la que no está en la columna del LED) al pin 8 de Arduino.
  4. Conectamos el LED a GND. Colocamos un cable (azul) desde la pata más corta del LED a la fila azul de la breadboard.

Circuito botón:

  1. Colocamos el botón en el centro de la breadboard.
  2. Conectamos el botón a la resistencia. Insertamos una pata de la resistencia en una de las columnas del botón, la otra la llevamos hasta la fila azul de la breadboard.
  3. Conectamos el botón a GND. Colocamos un cable (rosa) desde la otra columna del botón hasta la fila roja.
  4. Conectamos el botón al pin 2. Insertamos un cable (naranja) desde la columna en la que NO está la resistencia hasta el pin 2 de Arduino.
  5. Conectamos Arduino a la breadboard. Pinchamos un cable (negro) desde la fila azul de la breadboard a GND en Arduino, y un cable (rojo) desde la fila roja de la breadboard a 5V en Arduino.

Programando un botón en Arduino IDE

Abre Arduino IDE

El programa consiste en encender y apagar un LED cuando presionamos y soltamos un botón.

Lo primero que hacemos es definir las variables que almacenan el número del pin al que hemos conectado cada componente. De esta forma, si cambiamos el circuito y modificamos el pin al que conectamos los componentes, en el código solo tendremos que cambiar el número de la variable y evitaremos andar buscando por todo el código los pines a los que hemos conectado nuestro LED y botón.

const int LED = 8;  // pin al que conectamos el LED
const int BOTON = 2;     // pin al que conectamos el botón

En la función void setup() indicamos que el LED es una salida y el botón una entrada.

void setup() {
  pinMode(LED, OUTPUT);  // inicializa el LED como salida
  pinMode(BOTON, INPUT);  // inicializa el BOTON como entrada
}

En la función void loop() ordenamos a Arduino que primero lea el estado del botón y, si está presionado, encienda el LED. Si, por el contrario, el botón está relajado, debe apagar el LED.

void loop() {
  if(digitalRead(BOTON) == HIGH) {   // si el botón está pulsado
    digitalWrite(LED, HIGH);         // enciende el LED
  } else {                           // de lo contrario
    digitalWrite(LED, LOW);          // apaga el LED
  }
}

Finalmente, nuestro código ha quedado así:

Conectando dos botones a Arduino (pull-up)

Hasta ahora hemos usado un único botón para encender y apagar el LED. En este caso, vamos a usar dos botones, A y B, cada uno de ellos tiene una función, el botón A para encender el LED y el botón B para apagarlo.

Conectamos los componentes de forma similar al esquema siguiente:

esquema-conexion-2botones-led-Arduino

Circuito LED:

  1. Colocamos el LED en la zona central de la breadboard.
  2. Conectamos el LED a la resistencia. Para ello, insertamos una de las patas de la resistencia a la misma columna en la que está la pata más larga del LED. La otra pata de la resistencia la podemos colocar en cualquier otra columna cercana.
  3. Conectamos el LED al pin 8. Insertamos un cable (naranja) desde la última pata de la resistencia que hemos pinchado en la breadboard (la que no están en la columna del LED) al pin 8 de Arduino.
  4. Conectamos el LED a GND. Colocamos un cable (azul) desde la pata más corta del LED a la fila azul de la breadboard.

Circuito botón A:

  1. Colocamos un botón en el centro de la breadboard.
  2. Conectamos el botón a la resistencia. Insertamos una pata de la resistencia en una de las columnas del botón, la otra la llevamos hasta la fila roja de la breadboard (pull-up).
  3. Conectamos el botón a GND. Colocamos un cable (morado) desde la otra columnas del botón hasta la fila azul.
  4. Conectamos el botón al pin 2. Insertamos un cable (amarillo) desde la columna en la que están la resistencia y el botón hasta el pin 2 de Arduino.

Circuito botón B:

  1. Colocamos el otro botón en el centro de la breadboard.
  2. Conectamos el botón a la resistencia. Insertamos una pata de la resistencia en una de las columnas del botón, la otra la llevamos hasta la fila roja de la breadboard(pul-up).
  3. Conectamos el botón a GND. Colocamos un cable (verde) desde la otra columnas del botón hasta la fila azul.
  4. Conectamos el botón al pin 4. Insertamos un cable (rosa) desde la columna en la que están la resistencia y el botón hasta el pin 4 de Arduino.

Programando dos botones en Arduino IDE

En primer lugar, definimos las constantes. Tenemos que crear la constante para los pines del LED y los botones.

const int BOTON_A = 2;    // pin al que está conectado el botón A
const int BOTON_B = 4;         // pin al que está conectado el botón B
const int LED = 8;             // pin al  que está conectado el LED

Como estamos usando un botón para ON y otro para OFF, no necesitamos una variable que define el estado del botón.

En la función void setup(), tenemos que indicar que los botones A y B son una entrada y el LED una salida.

void setup() {
  pinMode(LED, OUTPUT);      // inicializa el LED como salida
  pinMode(BOTON_A, INPUT);   // inicializa el botón A como entrada
  pinMode(BOTON_B, INPUT);   // inicializa el botón B como entrada
}

En la función void loop(), ordenamos a nuestro Arduino que encienda el LED si el botón A está presionado y lo apague si presionamos el botón B.

void loop() {
  if (digitalRead(BOTON_A) == LOW) {   // si el botón A está presionado
    digitalWrite(LED, HIGH);           // enciende el LED
  }
  
  if (digitalRead(BOTON_B) == LOW) {  // si el botón B está presionado
    digitalWrite(LED, LOW);           // apaga el LED
   }
 }

Finalmente, el código tiene que quedarte de la siguiente forma:

Haz click en el botón “Subir” arduino-icono-subir . Una vez que la subida se haya completado con éxito, el LED se enciende cuando pulsamos el botón A y se apaga cuando pulsamos el botón B.

Sigue explorando

Dos LEDs, un botón para cada uno

Realiza un circuito usando 2 botones y 2 LEDs. El botón A tiene la función de encender y apagar el LED A, el botón B tiene la función de encender y apagar el LED B. Además, muestra en el monitor serie el estado (on/off) del LED A.

Varía el parpadeo de un LED con dos botones

Haz parpadear un LED. En este caso, el tiempo que el LED permanece encendido y apagado es variable, y puede incrementarse o decrementarse pulsando dos botones. Como consejo, incrementa/decrementa el tiempo de parpadeo en saltos grandes (~200ms). Explora variando este parámetro.

Cacharrea, crea y comparte tus proyectos.

  • Botones grandes 12x12x7mm con resistencias pull-up/down (Pack de 4)
    Botones grandes 12x12x7mm con resistencias pull-up/down (Pack de 4)
    Añadir al carrito
    Vista rápida
    0,20  (0,17  excl. IVA)
    En tienda
  • Agotado
    Genuino UNO Rev. 3
    Genuino UNO Rev. 3
    Leer más
    Vista rápida
    25,00  (20,66  excl. IVA)
    Temporalmente no disponible
  • Kit de botones con resistencias pull-up/down
    Kit de botones con resistencias pull-up/down
    Añadir al carrito
    Vista rápida
    2,00  (1,65  excl. IVA)
    En tienda
  • Agotado
    Kit de inicio Arduino/Genuino UNO
    Kit de inicio Arduino/Genuino UNO
    Leer más
    Vista rápida
    45,90  (37,93  excl. IVA)
    Temporalmente no disponible
Volver a: Iniciación a Arduino

©2017 Fábrica Digital desde Jerez de la Frontera, España.

717 717 452 (Teléfono y Whatsapp) / hola@fabricadigital.org

De Lunes a Jueves de 09:00 a 18:00. Viernes de 09:00 a 14:00.

Calle del Comercio, 18, 11407 Jerez de la Frontera, Cádiz. - Cómo llegar

Información Legal - Aceptamos

 

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account