Arduino Nano - Varios botones

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

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

Hardware Requerido

1×Official Arduino Nano
1×Alternatively, DIYables ATMEGA328P Nano Development Board
1×Cable USB A a Mini-B
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

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.

Acerca del Botón

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

Diagrama de Cableado

Diagrama de cableado de Arduino Nano con múltiples botones

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

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

Al usar varios botones, las cosas pueden complicarse en ciertos escenarios:

Afortunadamente, la biblioteca ezButton agiliza este proceso al gestionar internamente el rebote y los eventos de los botones. Esto libra 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 fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-multiple-button */ #include <ezButton.h> #define BUTTON_PIN_1 4 // The Arduino Nano pin connected to the button 1 #define BUTTON_PIN_2 5 // The Arduino Nano pin connected to the button 2 #define BUTTON_PIN_3 6 // The Arduino Nano pin connected to the button 3 #define BUTTON_PIN_4 7 // The Arduino Nano pin connected to the button 4 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 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 } 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 // 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 /* 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); */ 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"); }

Pasos R\u00e1pidos

  • Realiza el cableado como en la imagen anterior.
  • Conecta la placa Arduino Nano a tu PC mediante un cable USB.
  • Abre Arduino IDE en tu PC.
  • Selecciona la placa Arduino Nano correcta (p. ej. Arduino Nano Uno) y el puerto COM.
  • Haz clic en el icono de Libraries en la barra izquierda del Arduino IDE.
  • Busca “ezButton”, luego encuentra la biblioteca de botones de ArduinoGetStarted
  • Haz clic en el botón Install para instalar la biblioteca ezButton
Librería de botones para Arduino Nano
  • Copie el código anterior y péguelo en Arduino IDE.
  • Compilar y subir el código a la placa Arduino Nano haciendo clic en el botón Subir en Arduino IDE
Cómo cargar código de Arduino Nano en Arduino IDE
  • Abrir el Monitor Serial en el IDE de Arduino
  • Presionar y soltar 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
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Código de Arduino Nano - 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 botón.

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