Arduino Nano ESP32 - Botão LED

Este tutorial orienta você a usar o Arduino Nano ESP32 e um botão para controlar o LED. Vamos explorar dois casos de uso distintos:

Caso de Uso 1 - Sincronização entre os estados do LED e do botão, explicada assim:

Caso de Uso 2 - Alternar o estado do LED a cada pressionamento do botão, detalhado assim:

No Caso de Uso 2, é fundamental fazer o debounce do botão para garantir o funcionamento correto. Vamos explorar a importância do debounce comparando o comportamento do LED ao usar o código do Arduino Nano ESP32 com e sem debounce do botão.

Hardware Necessário

1×Arduino Nano ESP32
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×Botão para Protoboard com Capa
1×Kit de Botões para Protoboard
1×Botão de Pressão para Painel
1×Módulo de Botão
1×LED Kit
1×LED (red)
1×LED Module
1×(Alternativa) Button and LED Kit
1×220Ω Resistor
1×Protoboard
1×Fios Jumper
1×(Opcional) 5V Power Adapter for Arduino Nano ESP32
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

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

Sobre o LED e o Botão

Se você não conhece o LED e o botão (incluindo pinagem, funcionamento e programação), os tutoriais a seguir podem ajudar:

Diagrama de Ligação

Diagrama de Ligação do Botão e LED com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Aplicação 1 - O estado do LED fica sincronizado com o estado do botão

Código Arduino Nano ESP32

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-button-led */ #define BUTTON_PIN D2 // The Arduino Nano ESP32 pin connected to the button #define LED_PIN D5 // The Arduino Nano ESP32 pin connected to the LED 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 button pin as an pull-up input (HIGH when the switch is open and LOW when the switch is closed) 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 }

Passos Rápidos

  • Se esta é a primeira vez que você usa o Arduino Nano ESP32, veja como configurar o ambiente do Arduino Nano ESP32 na Arduino IDE.
  • Ligue os componentes como mostrado no diagrama.
  • Conecte a placa Arduino Nano ESP32 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Escolha a placa Arduino Nano ESP32 e a porta COM correspondente.
  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload da Arduino IDE para compilar e fazer o upload do código para o Arduino Nano ESP32.
Upload de código na Arduino IDE
  • Pressione o botão e mantenha-o pressionado por alguns segundos.
  • Veja a mudança na condição do LED.

Você verá que o estado do LED fica sincronizado com o estado do botão.

Explicação do Código

Veja a explicação linha por linha nos comentários do código-fonte!

Aplicação 2 - O botão alterna o LED

Código Arduino Nano ESP32 - Botão Alterna o LED Sem Debounce

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-button-led */ #define BUTTON_PIN D2 // The Arduino Nano ESP32 pin connected to the button #define LED_PIN D5 // The Arduino Nano ESP32 pin connected to the LED 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); } }

Explicação do Código

Você encontra a explicação nas linhas de comentário do código do Arduino Nano ESP32 acima.

No código, a expressão led_state = !led_state é igual ao código a seguir:

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

Passos Rápidos

  • Copie o código e abra-o na Arduino IDE.
  • Faça o upload do código para o Arduino Nano ESP32.
  • Pressione e solte o botão várias vezes.
  • Veja a mudança no estado do LED.

Você pode observar que o estado do LED é alternado toda vez que o botão é pressionado. No entanto, esse comportamento pode nem sempre ser consistente. Às vezes, o estado do LED pode ser alternado rapidamente várias vezes em um único pressionamento do botão, ou pode não alternar de jeito nenhum (alternando duas vezes em sequência rápida, o que pode ser difícil de ver a olho nu).

⇒ Para resolver esse problema, precisamos fazer o debounce do botão.

Código Arduino Nano ESP32 - Botão Alterna o LED Com Debounce

Fazer o debounce de um botão pode ser difícil para iniciantes. Felizmente, a biblioteca ezButton torna isso fácil.

Por que o debounce é necessário? Veja o tutorial Arduino Nano ESP32 - Debounce de Botão para mais informações.

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-button-led */ #include <ezButton.h> #define BUTTON_PIN D2 // The Arduino Nano ESP32 pin connected to the button #define LED_PIN D5 // The Arduino Nano ESP32 pin connected to the LED ezButton button(BUTTON_PIN); // create ezButton object 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); } }

Passos Rápidos

  • Instale a biblioteca ezButton. Consulte Como Fazer para ver as instruções.
  • Copie o código e abra-o com a Arduino IDE.
  • Clique no botão Upload da Arduino IDE para fazer o upload do código para o Arduino Nano ESP32.
  • Pressione e solte o botão várias vezes.
  • Veja a mudança no estado do LED.

Você verá que o estado do LED é alternado exatamente uma vez a cada vez que o botão é pressionado.

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!