Encoder Rotativo (KY-040): O Guia Completo — Sinais A e B, Sentido de Giro, Interrupção e Bounce
Guia completo do encoder rotativo KY-040: por que ele gira infinito, como os sinais A e B revelam o sentido, leitura por interrupção, tratamento de bounce e diferença para o potenciômetro.
O botão de volume de um som antigo trava nas pontas. Já o de um equipamento moderno gira para sempre, nos dois sentidos, e o volume acompanha. A diferença entre os dois é o encoder rotativo.
Ele não tem começo nem fim: não informa uma posição, informa movimento — quantos passos e para que lado.
Neste guia você vai entender como dois sinais defasados revelam o sentido do giro, por que a leitura simples falha e como resolver o bounce.
🔄 O que é e por que gira infinito
Por dentro há um disco com contatos e duas chaves, chamadas A e B. Conforme você gira, cada chave abre e fecha em sequência — mas não ao mesmo tempo: uma sempre muda um pouquinho antes da outra.
Não existe fim de curso porque o disco simplesmente continua girando. Por isso o encoder não sabe em que posição está — só sabe que se moveu.
🧭 Como ele descobre o sentido
Este é o coração do encoder. Os sinais A e B ficam defasados em 90° (o que se chama sinal em quadratura). Quando você gira num sentido, A muda primeiro; no outro, B muda primeiro.
- O código detecta que o sinal A mudou de estado.
- Nesse instante, ele olha o sinal B.
- Se B estiver diferente de A, o giro foi para um lado.
- Se B estiver igual a A, foi para o outro.
- Soma ou subtrai 1 no contador — e pronto.
🔌 Os pinos do KY-040
- CLK (ou A): primeiro sinal de quadratura.
- DT (ou B): segundo sinal, defasado.
- SW: o botão de apertar o eixo — sim, ele também clica.
- + e GND: alimentação, 3,3 V ou 5 V.
⚡ Bounce: por que os passos pulam
Os contatos internos são mecânicos. Ao mudar de estado, eles trepidam por alguns milissegundos, gerando uma rajada de pulsos falsos. O resultado é o clássico: você gira um passo e o contador pula três, ou anda para trás.
Há duas formas de resolver, e o ideal é usar as duas:
loop() estiver ocupado atualizando um display, ele pode perder a mudança do sinal. A interrupção para tudo e atende o encoder na hora.🆚 Encoder x potenciômetro
- Informa posição absoluta
- Tem começo e fim de curso
- Saída analógica
- Ideal para volume e brilho fixos
- Informa movimento relativo
- Gira infinito, sem fim
- Saída digital (2 sinais)
- Ideal para menus e ajuste fino
🧮 Exemplo prático: ajuste de temperatura
📖 Um menu de forno
1) Contador: começa em 180 (graus).
2) Giro horário: a cada passo, +1 grau.
3) Giro anti-horário: −1 grau.
4) Limites: trave entre 100 e 250 no código, porque o encoder giraria para sempre.
5) Clique (SW): confirma e sai do ajuste.
🎯 Onde usar
- Menus em display OLED ou LCD.
- Ajuste de volume, brilho e temperatura.
- Contagem de voltas de um eixo.
- Interfaces onde um botão só não basta.
🛠️ Problemas comuns
| Sintoma | Causa provável | Solução |
|---|---|---|
| Conta vários passos por clique | Bounce dos contatos | Capacitor de 100 nF + debounce |
| Anda para trás sozinho | Leitura fora de sincronismo | Use interrupção na borda do sinal A |
| Perde passos ao girar rápido | Loop ocupado | Troque a leitura do loop por interrupção |
| Sentido invertido | CLK e DT trocados | Inverta os dois fios ou a lógica |
| Botão SW não responde | Falta pull-up | Use INPUT_PULLUP |
🚀 Conclusão
O encoder resolve o que o potenciômetro não consegue: ajuste infinito com clique de confirmação, tudo num componente só.
Guarde o essencial: dois sinais defasados revelam o sentido, e bounce se trata — com capacitor, com debounce e, de preferência, lendo por interrupção.
Vai usar num menu de quê? Comenta aí! 🦣⚡
Mamute Eletrônica · Componentes, Módulos e Robótica · Rua Vitória, 125 — Santa Efigênia/SP · mamuteeletronica.com.br
Para montar o que você acabou de ler
Encoder combina com display: gira, vê o valor mudar na tela e confirma no clique.