Arduino Nano - Botón - LED

Este tutorial te enseña cómo usar el Arduino Nano y un botón para controlar el LED. Aprenderemos dos aplicaciones diferentes:

Aplicación 1 - El estado del LED está sincronizado con el estado del botón. En detalle:

Aplicación 2 - El estado del LED se alterna cada vez que se presiona el botón. Más específicamente:

En la Aplicación 2, necesitamos eliminar el rebote del botón para asegurarnos de que funcione correctamente. Averiguaremos por qué es importante al comparar cómo se comporta el LED cuando usamos el código de Arduino con y sin el rebote del botón.

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×Botón Pulsador de Panel
1×Módulo de Botón Pulsador
1×LED Kit
1×LED (red)
1×LED Module
1×220Ω Resistor
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.

Buy Note: Use the LED Module for easier wiring. It includes an integrated resistor.

Acerca de LED y Botón

Si no está familiarizado con un LED y un botón (incluyendo la disposición de pines, funcionamiento y programación), los siguientes tutoriales pueden ayudar:

Diagrama de Cableado

Diagrama de cableado de Arduino Nano para botón y LED

This image is created using Fritzing. Click to enlarge image

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

Aplicación 1 - El estado del LED está sincronizado con el estado del botón

Código de Arduino Nano

/* * 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-button-led */ const int BUTTON_PIN = 2; // The number of the pushbutton pin const int LED_PIN = 5; // The number of the LED pin int button_state = 0; // variable for reading the pushbutton status void setup() { // Configure the LED pin as a digital output pinMode(LED_PIN, OUTPUT); // initialize the pushbutton pin as an pull-up input: // The pull-up input pin is HIGH when the button is open and LOW when pressed. pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the pushbutton value: button_state = digitalRead(BUTTON_PIN); // control LED according to the state of button if(button_state == LOW) // If button is pressing digitalWrite(LED_PIN, HIGH); // turn on LED else // otherwise, button is not pressing digitalWrite(LED_PIN, LOW); // turn off LED }

Pasos R\u00e1pidos

  • Conecta un Arduino Nano a tu ordenador con un cable USB.
  • Inicia el IDE de Arduino y selecciona la placa correcta y el puerto correcto.
  • Copia el código y ábrelo en el IDE de Arduino.
  • Haz clic en el botón Subir del IDE de Arduino para compilar y cargar el código al Arduino Nano.
Subir código al IDE de Arduino
  • Pulsa el botón y manténlo pulsado durante unos segundos.
  • Observa el cambio en el estado del LED.

Verás que el estado del LED está sincronizado con el estado del botón.

Explicación del código

¡Consulta la explicación línea por línea contenida en los comentarios del código fuente!

Aplicación 2 - El botón alterna el LED

Código para Arduino Nano - El botón alterna el LED sin rebote

/* * 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-button-led */ const int BUTTON_PIN = 2; // The Arduino Nano pin connected to button's pin const int LED_PIN = 5; // The Arduino Nano pin connected to LED's pin int led_state = LOW; // The current state of LED int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if(prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // toggle state of LED led_state = !led_state; // control LED according to the toggled state digitalWrite(LED_PIN, led_state); } }

Explicación del código

Puede localizar la explicación en las líneas de comentario del código de Arduino Nano anterior.

En el código, la expresión led_state = !led_state es equivalente al siguiente código:

if(led_state == LOW) led_state = HIGH; else led_state = LOW;

Pasos R\u00e1pidos

  • Copia el código y ábrelo en el IDE de Arduino.
  • Sube el código al Arduino Nano.
  • Presiona el botón de reinicio y el botón varias veces.
  • Observa el cambio en el estado del LED.

Puede observarse que el estado del LED se alterna cada vez que se pulsa el botón. Sin embargo, este comportamiento puede no ser siempre consistente. En ocasiones, el estado del LED puede alternarse rápidamente varias veces durante una sola pulsación del botón, o puede no alternarse en absoluto (alternando dos veces en rápida sucesión, lo cual puede ser difícil de ver a simple vista).

⇒ Para resolver este problema, necesitamos anti-rebote para el botón.

Código para Arduino Nano: Botón que alterna el LED con antirrebote

La eliminación del rebote de un botón puede ser un desafío para los principiantes. Afortunadamente, la biblioteca ezButton facilita las cosas.

¿Por qué es necesario el antirrebote? Consulte el Tutorial de antirrebote del botón para Arduino Nano para obtener más informació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-button-led */ #include <ezButton.h> const int BUTTON_PIN = 2; // The number of the pushbutton pin const int LED_PIN = 5; // The number of the LED pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; int led_state = LOW; // The current state of LED void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if(button.isPressed()) { Serial.println("The button is pressed"); // toggle state of LED led_state = !led_state; // control LED according to the toggleed sate digitalWrite(LED_PIN, led_state); } }

Pasos R\u00e1pidos

  • Instala la biblioteca ezButton. Consulta Cómo hacerlo para obtener instrucciones.
  • Copia el código y ábrelo con el IDE de Arduino.
  • Haz clic en el botón Subir del IDE de Arduino para cargar el código al Arduino Nano.
  • Presiona y suelta el botón varias veces.
  • Observa el cambio de estado del LED.

Verá que el estado del LED se alterna exactamente una vez cada vez que se presiona el botón.

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!