Arduino Nano ESP32 - Botão - Debounce
⇒ Não, não está. Isso acontece porque, no mundo físico, quando você pressiona o botão uma única vez, o estado do botão alterna rapidamente entre LOW e HIGH várias vezes em vez de apenas uma. Essa é uma característica mecânica e física. Esse fenômeno tem um nome: chattering. O fenômeno de chattering faz o MCU (por exemplo, o ESP32) ler vários pressionamentos do botão em resposta a um único pressionamento real. Isso resulta em mau funcionamento. O processo para eliminar esse fenômeno se chama debounce. Este tutorial mostra como fazer isso.

Este tutorial apresenta:
- Como fazer debounce de um botão no código do Arduino Nano ESP32
- Como fazer debounce de um botão no código do Arduino Nano ESP32 usando uma biblioteca
- Como fazer debounce de vários botões no código do Arduino Nano ESP32 usando uma biblioteca
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Botão
Temos tutoriais específicos sobre o botão. O tutorial contém informações detalhadas e instruções passo a passo sobre a pinagem do hardware, o princípio de funcionamento, a ligação ao ESP32, o código do Arduino Nano ESP32... Saiba mais sobre eles nos links a seguir:
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Para deixar tudo claro, vamos executar o código do Arduino Nano ESP32 SEM e COM debounce, e comparar os resultados
Lendo o Botão sem Debounce
Passos Rápidos
Para começar com o Arduino Nano ESP32, siga estes passos:
- Se você é novo no Arduino Nano ESP32, consulte o tutorial sobre como configurar o ambiente do Arduino Nano ESP32 na Arduino IDE.
- Ligue os componentes conforme o diagrama fornecido.
- Conecte a placa Arduino Nano ESP32 ao seu computador usando um cabo USB.
- Abra a Arduino IDE no seu computador.
- Selecione a placa Arduino Nano ESP32 e a porta COM correspondente.
- Copie o código abaixo e cole na Arduino IDE.
- Compile e faça o upload do código para a placa Arduino Nano ESP32 clicando no botão Upload da Arduino IDE

- Abra o Serial Monitor na Arduino IDE

- Pressione o botão uma vez, mas mantenha-o pressionado por alguns segundos, e depois solte.
- Veja o resultado no Serial Monitor. Ele se parece com o abaixo:
⇒ Como você pode ver, você fez apenas um pressionamento e uma soltura, mas o Arduino Nano ESP32 leu vários pressionamentos e solturas.
※ Nota:
O fenômeno de chattering não acontece sempre. Se ele não acontecer, tente o teste acima várias vezes.
Lendo o Botão com Debounce
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.
- Copie o código abaixo e cole na Arduino IDE.
- Compile e faça o upload do código para a placa Arduino Nano ESP32 clicando no botão Upload da Arduino IDE
- Abra o Serial Monitor na Arduino IDE
- Mantenha o botão pressionado por alguns segundos e depois solte.
- Veja o resultado no Serial Monitor. Ele se parece com o abaixo:
⇒ Como você pode ver, você fez um pressionamento e uma soltura, e o Arduino Nano ESP32 leu um pressionamento e uma soltura. O chattering foi eliminado.
Facilitamos - Código de Debounce de Botão para Arduino Nano ESP32 com Biblioteca
Para facilitar para os iniciantes, especialmente ao fazer debounce de vários botões, criamos uma biblioteca de botão chamada ezButton. Você pode saber mais sobre a biblioteca ezButton aqui.
Código de Debounce de Botão para Arduino Nano ESP32 com um Único Botão
Código de Debounce de Botão para Arduino Nano ESP32 com Vários Botões
Vamos escrever o código de debounce para três botões.
O diagrama de ligação

This image is created using Fritzing. Click to enlarge image
Vídeo
Conhecimento Adicional
- O valor de DEBOUNCE_TIME depende do hardware. Hardwares diferentes podem usar valores diferentes.
- O debounce também deve ser aplicado a chave liga/desliga, chave de fim de curso, chave reed, sensor de toque ...