Arduino UNO R4 - Botão - Debounce
Ao programar o Arduino Uno R4 para detectar um evento de pressionamento de botão, você pode perceber que um único pressionamento é detectado várias vezes. Isso acontece porque, devido a fatores mecânicos, o botão ou a chave pode alternar rapidamente entre LOW e HIGH várias vezes. Isso é chamado de "chattering". O chattering pode fazer um único pressionamento de botão ser detectado como vários pressionamentos, o que pode causar erros em algumas aplicações. Este tutorial explica como corrigir esse problema, um processo conhecido como debounce do botão.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Botão
Se você não está familiarizado com botões, aprenda sobre eles (pinagem, funcionamento, programação) nos tutoriais a seguir:
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Vamos examinar e comparar o código do Arduino UNO R4 sem e com debounce, e observar o comportamento de cada um.
Arduino Uno R4 - Botão sem Debounce
Antes de aprendermos sobre debounce, vamos olhar o código sem ele e ver como ele se comporta.
Passos Rápidos
Siga estas instruções passo a passo:
- Se esta é a primeira vez que você usa o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/Minima na Arduino IDE.
- Faça a ligação dos componentes de acordo com o diagrama fornecido.
- Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
- Abra a Arduino IDE no seu computador.
- Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
- Copie o código acima e abra-o na Arduino IDE.
- Clique no botão Upload na Arduino IDE para enviar o código ao Arduino UNO R4.

- Abra o Serial Monitor.
- Pressione e segure o botão por alguns segundos, depois solte-o.
- Confira o resultado no Serial Monitor.
Como você pode ver, você pressionou e soltou o botão apenas uma vez. No entanto, o Arduino o reconhece como vários pressionamentos e liberações.
※ Nota:
O valor de DEBOUNCE_TIME varia conforme a aplicação. Cada aplicação pode usar um valor próprio.
Arduino Uno R4 - Botão com Debounce
Passos Rápidos
- Copie o código acima e abra-o na Arduino IDE.
- Pressione o botão Upload na Arduino IDE para enviar o código ao Arduino UNO R4.
- Abra o Serial Monitor.
- Mantenha o botão pressionado por alguns segundos antes de soltá-lo.
- Confira o Serial Monitor.
Como você pode ver, você pressionou e soltou o botão uma vez. O Arduino o detecta corretamente como um único pressionamento e uma única liberação, eliminando qualquer chattering.
Tornamos Simples: Código de Debounce de Botão para Arduino UNO R4 Usando uma Biblioteca
Criamos uma forma mais simples para iniciantes que usam muitos botões, por meio de uma biblioteca chamada ezButton. Você pode saber mais sobre a biblioteca ezButton aqui.
Vamos ver alguns códigos de exemplo.
Código de Debounce de Botão para Arduino UNO R4 com Um Único Botão
Código de Debounce de Botão para Arduino UNO R4 com Vários Botões
Vamos fazer o debounce de 3 botões. Este é o diagrama de ligação entre o Arduino UNO R4 e três botões:

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.