ESP32 - Botão - Debounce
⇒ Não, não está. Isso acontece porque no mundo físico, quando você pressiona um botão uma única vez, o estado do botão alterna rapidamente entre LOW e HIGH várias vezes em vez de uma. Essa é uma característica mecânica e física. Esse fenômeno é conhecido pelo nome de chattering (trepidação). O fenômeno de trepidação faz com que o MCU (por exemplo, o ESP32) leia 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 é chamado de debounce. Este tutorial mostra como fazer isso.

Este tutorial apresenta:
- Como fazer o debounce de um botão no código do ESP32
- Como fazer o debounce de um botão no código do ESP32 usando uma biblioteca
- Como fazer o debounce de vários botões no código do ESP32 usando uma biblioteca
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 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 ESP32... Saiba mais sobre eles nos links a seguir:
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.
Para deixar tudo claro, vamos executar o código do ESP32 SEM e COM debounce, e comparar os resultados
Lendo o Botão sem Debounce
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 no Arduino IDE.
- Faça a ligação como na imagem acima.
- Conecte a placa ESP32 ao seu PC por um cabo USB Type-C
- Abra o Arduino IDE no seu PC.
- Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
- Copie o código abaixo e cole-o no Arduino IDE.
- Compile e faça upload do código para a placa ESP32 clicando no botão Upload no Arduino IDE

- Abra o Serial Monitor no Arduino IDE

- Pressione o botão uma vez, 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ê pressionou e soltou apenas uma vez, mas o ESP32 leu vários pressionamentos e solturas.
※ Nota:
O fenômeno de trepidação não acontece todas as vezes. 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 ESP32, veja como configurar o ambiente para o ESP32 no Arduino IDE.
- Copie o código abaixo e cole-o no Arduino IDE.
- Compile e faça upload do código para a placa ESP32 clicando no botão Upload no Arduino IDE
- Abra o Serial Monitor no 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ê pressionou e soltou uma vez, e o ESP32 leu um pressionamento e uma soltura. A trepidação foi eliminada.
Nós Simplificamos - Código ESP32 de Debounce de Botão com Biblioteca
Para facilitar para os iniciantes, principalmente ao fazer o debounce de vários botões, criamos uma biblioteca de botão chamada ezButton. Você pode aprender sobre a biblioteca ezButton aqui.
Código ESP32 de Debounce para um Único Botão
Código ESP32 de Debounce para 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 para chave liga/desliga, chave de fim de curso, reed switch, sensor de toque ...