Arduino Nano ESP32 - Múltiples botones

Este tutorial te enseña cómo programar un Arduino Nano ESP32 para que funcione con varios botones al mismo tiempo sin usar la función delay(). El tutorial ofrece código de dos formas diferentes:

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

Hardware Requerido

1×Arduino Nano ESP32
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×Botón para Protoboard con Tapa
1×Kit de Botón para Protoboard
1×Panel-mount Button
1×Módulo de Botón Pulsador
1×Protoboard
1×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Botón Acerca de

Si no estás familiarizado con el botón (pinout, cómo funciona, cómo programarlo...), los siguientes tutoriales pueden proporcionarte más información:

Diagrama de Cableado

Diagrama de cableado de botones múltiples para Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

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

Al usar varios botones, las cosas pueden volverse complicadas en ciertas situaciones:

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

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-multiple-button */ #include <ezButton.h> #define BUTTON_PIN_1 D4 // The Arduino Nano ESP32 pin connected to the button 1 #define BUTTON_PIN_2 D5 // The Arduino Nano ESP32 pin connected to the button 2 #define BUTTON_PIN_3 D6 // The Arduino Nano ESP32 pin connected to the button 3 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 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 } 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 // 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 /* 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); */ 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"); }

Pasos R\u00e1pidos

Para empezar con Arduino Nano ESP32, siga estos pasos:

  • Si eres nuevo en Arduino Nano ESP32, consulta el tutorial sobre cómo configurar el entorno para Arduino Nano ESP32 en el IDE de Arduino.
  • Conecta los componentes según el diagrama proporcionado.
  • Conecta la placa Arduino Nano ESP32 a tu ordenador usando un cable USB.
  • Inicia el IDE de Arduino en tu ordenador.
  • Selecciona la placa Arduino Nano ESP32 y su puerto COM correspondiente.
  • Realiza el cableado como en la imagen anterior.
  • Conecta la placa Arduino Nano ESP32 a tu ordenador mediante un cable USB.
  • Abre el IDE de Arduino en tu ordenador.
  • Selecciona la placa correcta Arduino Nano ESP32 (p. ej. Arduino Nano ESP32 Uno) y el puerto COM.
  • Haz clic en el icono Bibliotecas en la barra lateral izquierda del IDE de Arduino.
  • Busca “ezButton”, luego encuentra la biblioteca ezButton de ArduinoGetStarted.
  • Haz clic en el botón Instalar para instalar la biblioteca ezButton.
Biblioteca de botones para Arduino Nano ESP32
  • Copia el código anterior y pégalo en Arduino IDE.
  • Compila y carga el código a la placa Arduino Nano ESP32 haciendo clic en el botón Subir en Arduino IDE
Cómo subir código de Arduino Nano ESP32 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
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Código para Arduino Nano ESP32 - Múltiples botones usando un arreglo

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

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-multiple-button */ #include <ezButton.h> #define BUTTON_NUM 3 // the number of buttons #define BUTTON_PIN_1 D4 // The Arduino Nano ESP32 pin connected to the button 1 #define BUTTON_PIN_2 D5 // The Arduino Nano ESP32 pin connected to the button 2 #define BUTTON_PIN_3 D6 // The Arduino Nano ESP32 pin connected to the button 3 ezButton buttonArray[] = { ezButton(BUTTON_PIN_1), ezButton(BUTTON_PIN_2), ezButton(BUTTON_PIN_3) }; 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!