Múltiples botones de Arduino

Este tutorial enseña cómo programar un Arduino para usar varios botones simultáneamente sin usar la función delay(). El tutorial proporciona código de dos maneras:

Usaremos cinco botones como ejemplo. Puedes modificarlo fácilmente para adaptarlo a dos botones, cuatro botones o incluso más.

Acerca del botón

Tenemos un tutorial detallado sobre botones que incluye el pinout de hardware, el principio de funcionamiento, el cableado de Arduino y las instrucciones de código. Aprende más aquí:

Diagrama de Cableado

Diagrama de cableado de Arduino con múltiples botones

This image is created using Fritzing. Click to enlarge image

Código de Arduino - Múltiples botones con antirrebote

Cuando se utilizan varios botones, las cosas pueden complicarse en ciertos escenarios:

Afortunadamente, la biblioteca ezButton simplifica este proceso al gestionar internamente el rebote y los eventos del botón. Esto libera a los usuarios de la tarea de gestionar marcas de tiempo y variables al usar la biblioteca. Además, emplear un arreglo de botones puede mejorar la claridad y la brevedad del código.

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-multiple-button */ #include <ezButton.h> #define BUTTON_NUM 5 // the number of buttons #define BUTTON_PIN_1 2 // The Arduino pin connected to the button 1 #define BUTTON_PIN_2 3 // The Arduino pin connected to the button 2 #define BUTTON_PIN_3 4 // The Arduino pin connected to the button 3 #define BUTTON_PIN_4 5 // The Arduino pin connected to the button 4 #define BUTTON_PIN_5 6 // The Arduino pin connected to the button 5 ezButton button1(BUTTON_PIN_1); // create ezButton object for button 1 ezButton button2(BUTTON_PIN_2); // create ezButton object for button 2 ezButton button3(BUTTON_PIN_3); // create ezButton object for button 3 ezButton button4(BUTTON_PIN_4); // create ezButton object for button 4 ezButton button5(BUTTON_PIN_5); // create ezButton object for button 5 void setup() { Serial.begin(9600); button1.setDebounceTime(100); // set debounce time to 100 milliseconds button2.setDebounceTime(100); // set debounce time to 100 milliseconds button3.setDebounceTime(100); // set debounce time to 100 milliseconds button4.setDebounceTime(100); // set debounce time to 100 milliseconds button5.setDebounceTime(100); // set debounce time to 100 milliseconds } void loop() { button1.loop(); // MUST call the loop() function first button2.loop(); // MUST call the loop() function first button3.loop(); // MUST call the loop() function first button4.loop(); // MUST call the loop() function first button5.loop(); // MUST call the loop() function first // get button state after debounce int button1_state = button1.getState(); // the state after debounce int button2_state = button2.getState(); // the state after debounce int button3_state = button3.getState(); // the state after debounce int button4_state = button4.getState(); // the state after debounce int button5_state = button5.getState(); // the state after debounce /* Serial.print("The button 1 state: "); Serial.println(button1_state); Serial.print("The button 2 state: "); Serial.println(button2_state); Serial.print("The button 3 state: "); Serial.println(button3_state); Serial.print("The button 4 state: "); Serial.println(button4_state); Serial.print("The button 5 state: "); Serial.println(button5_state); */ if (button1.isPressed()) Serial.println("The button 1 is pressed"); if (button1.isReleased()) Serial.println("The button 1 is released"); if (button2.isPressed()) Serial.println("The button 2 is pressed"); if (button2.isReleased()) Serial.println("The button 2 is released"); if (button3.isPressed()) Serial.println("The button 3 is pressed"); if (button3.isReleased()) Serial.println("The button 3 is released"); if (button4.isPressed()) Serial.println("The button 4 is pressed"); if (button4.isReleased()) Serial.println("The button 4 is released"); if (button5.isPressed()) Serial.println("The button 5 is pressed"); if (button5.isReleased()) Serial.println("The button 5 is released"); }

Pasos R\u00e1pidos

  • Haz el cableado como en la imagen de arriba.
  • Conecta la placa Arduino a tu PC mediante un cable USB.
  • Abre Arduino IDE en tu PC.
  • Selecciona la placa Arduino correcta (p. ej. Arduino Uno) y el puerto COM.
  • Haz clic en el icono Bibliotecas en la barra izquierda del IDE de Arduino.
  • Busca “ezButton”, luego encuentra la biblioteca de botones de ArduinoGetStarted
  • Haz clic en el botón Instalar para instalar la biblioteca ezButton.
Librería de botones de Arduino
  • Copia el código anterior y pégalo en el Arduino IDE.
  • Compila y sube el código al tablero de Arduino haciendo clic en el botón Subir en el Arduino IDE
Cómo subir código de Arduino al IDE de Arduino
  • Abrir el Monitor Serial en el IDE de Arduino
  • Presiona y suelta el botón uno por uno
COM6
Send
The button 1 is pressed The button 1 is released The button 2 is pressed The button 2 is released The button 3 is pressed The button 3 is released The button 4 is pressed The button 4 is released The button 5 is pressed The button 5 is released
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Código de Arduino - Múltiples botones usando un arreglo

Podemos mejorar el código anterior empleando un arreglo de botones. El código siguiente utiliza este arreglo para manejar objetos de botones.

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-multiple-button */ #include <ezButton.h> #define BUTTON_NUM 5 // the number of buttons #define BUTTON_PIN_1 2 // The Arduino pin connected to the button 1 #define BUTTON_PIN_2 3 // The Arduino pin connected to the button 2 #define BUTTON_PIN_3 4 // The Arduino pin connected to the button 3 #define BUTTON_PIN_4 5 // The Arduino pin connected to the button 4 #define BUTTON_PIN_5 6 // The Arduino pin connected to the button 5 ezButton buttonArray[] = { ezButton(BUTTON_PIN_1), ezButton(BUTTON_PIN_2), ezButton(BUTTON_PIN_3), ezButton(BUTTON_PIN_4), ezButton(BUTTON_PIN_5) }; void setup() { Serial.begin(9600); for (byte i = 0; i < BUTTON_NUM; i++) { buttonArray[i].setDebounceTime(100); // set debounce time to 100 milliseconds } } void loop() { for (byte i = 0; i < BUTTON_NUM; i++) buttonArray[i].loop(); // MUST call the loop() function first for (byte i = 0; i < BUTTON_NUM; i++) { // get button state after debounce int button_state = buttonArray[i].getState(); // the state after debounce /* Serial.print("The button "); Serial.print(i + 1); Serial.print(": "); Serial.println(button_state); */ if (buttonArray[i].isPressed()) { Serial.print("The button "); Serial.print(i + 1); Serial.println(" is pressed"); } if (buttonArray[i].isReleased()) { Serial.print("The button "); Serial.print(i + 1); Serial.println(" is released"); } } }

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!