ESP32 - Botão - Pressionamento Longo e Curto
Este tutorial ensina você a usar o ESP32 para detectar o pressionamento longo e o pressionamento curto. Em detalhes, vamos aprender:
- Como detectar o pressionamento curto no botão
- Como detectar o pressionamento longo no botão
- Como detectar tanto o pressionamento longo quanto o pressionamento curto
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. Cada 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
- Diagrama de Ligação entre o ESP32 e o botão para montagem em PCB

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.
- Diagrama de Ligação entre o ESP32 e o botão para montagem em painel

This image is created using Fritzing. Click to enlarge image
Este tutorial vai usar o resistor de pull-up interno. O estado do botão é HIGH normalmente e LOW quando pressionado.
Como Detectar o Pressionamento Curto
- Meça o tempo entre os eventos de pressionar e soltar.
- Se a duração for menor que um tempo pré-definido, o evento de pressionamento curto é detectado.
Vamos ver passo a passo:
- Defina quanto tempo dura, no máximo, um pressionamento curto
- Detecte que o botão foi pressionado e salve o momento do pressionamento
- Detecte que o botão foi solto e salve o momento da soltura
- Calcule a duração do pressionamento
- Determine o pressionamento curto comparando a duração do pressionamento com o tempo de pressionamento curto definido.
Código ESP32 para detectar o pressionamento curto
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 upload do código acima para o ESP32 pelo Arduino IDE
- Pressione o botão rapidamente várias vezes.
- Veja o resultado no Serial Monitor. Ele se parece com o abaixo:
※ Nota:
O Serial Monitor pode imprimir vários pressionamentos curtos para um único pressionamento. Esse é um comportamento normal do botão. Esse comportamento é chamado de “fenômeno de trepidação”. Vamos aprender como eliminar esse problema mais adiante neste tutorial.
Como Detectar o Pressionamento Longo
Existem dois casos de uso para detectar o pressionamento longo.
- O evento de pressionamento longo é detectado logo após o botão ser solto
- O evento de pressionamento longo é detectado enquanto o botão está sendo pressionado.
No primeiro caso:
- Meça a duração entre o evento de pressionar e o evento de soltar.
- Se a duração for maior que um tempo pré-definido, o evento de pressionamento longo é detectado.
No segundo caso: durante o tempo em que o botão está sendo pressionado, faça o processo abaixo repetidamente:
- Meça o tempo de pressionamento.
- Se a duração for maior que o tempo pré-definido, o evento de pressionamento longo é detectado.
- Caso contrário, repita o processo até o botão ser solto
Código ESP32 para detectar o pressionamento longo ao soltar
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 upload do código acima para o ESP32 pelo Arduino IDE
- Pressione e solte o botão após um segundo.
- Veja o resultado no Serial Monitor. Ele se parece com o abaixo:
Código ESP32 para detectar o pressionamento longo durante o pressionamento
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 upload do código acima para o ESP32 pelo Arduino IDE
- Pressione e solte o botão após vários segundos.
- Veja o resultado no Serial Monitor. Ele se parece com o abaixo:
Como Detectar Tanto o Pressionamento Longo quanto o Curto
Pressionamento Curto e Pressionamento Longo após soltar
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 upload do código acima para o ESP32 pelo Arduino IDE
- Pressione o botão de forma longa e curta.
- Veja o resultado no Serial Monitor. Ele se parece com o abaixo:
※ Nota:
O Serial Monitor pode mostrar várias detecções de pressionamento curto durante um pressionamento longo. Esse é o comportamento normal do botão. Esse comportamento é chamado de “fenômeno de trepidação”. O problema será resolvido na última parte deste tutorial.
Pressionamento Curto e Pressionamento Longo durante o pressionamento
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 upload do código acima para o ESP32 pelo Arduino IDE
- Pressione o botão de forma longa e curta.
- Veja o resultado no Serial Monitor. Ele se parece com o abaixo:
Pressionamento Longo e Curto com Debounce
É muito importante fazer o debounce do botão em muitas aplicações.
O debounce é um pouco complicado, principalmente ao usar vários botões. Para facilitar para os iniciantes, criamos uma biblioteca chamada ezButton.
Vamos usar essa biblioteca nos códigos abaixo
Pressionamento Curto e Pressionamento Longo com debounce após soltar
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 no Arduino IDE.
- Instale a biblioteca ezButton. Veja Como Fazer
- Faça upload do código acima para o ESP32 pelo Arduino IDE
- Pressione o botão de forma longa e curta.
- Veja o resultado no Serial Monitor. Ele se parece com o abaixo:
Pressionamento Curto e Pressionamento Longo com debounce durante o pressionamento
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 no Arduino IDE.
- Instale a biblioteca ezButton. Veja Como Fazer
- Faça upload do código acima para o ESP32 pelo Arduino IDE
- Pressione o botão de forma longa e curta.
- Veja o resultado no Serial Monitor. Ele se parece com o abaixo:
Vídeo
Por Que Precisamos de Pressionamento Longo e Curto
- Para economizar o número de botões e de pinos de entrada digital. Um único botão pode ter duas ou mais funções. Por exemplo, pressionamento curto para acender a luz, pressionamento longo para ligar o ventilador.
- Use o pressionamento longo em vez do pressionamento curto para evitar pressionamentos acidentais. Por exemplo, alguns tipos de dispositivos usam o botão para a redefinição de fábrica. Se o botão for pressionado por acidente, isso é perigoso.