Aquele joystick de videogame que você já usou mil vezes tem um segredo simples: ele não sabe o que é direita ou esquerda. Por dentro são só dois potenciômetros montados em ângulo reto, e é o seu código que transforma dois números em movimento.

O módulo KY-023 é a versão pronta para Arduino: os dois potenciômetros, um botão embutido no eixo e cinco pinos de ligação.

Neste guia você vai entender a leitura analógica, aprender a tratar a zona morta (o motivo de o seu robô andar sozinho) e ver como calibrar direito.

💡 Salve este guia: a parte de zona morta e calibração resolve 90% dos problemas com joystick.

🕹️ O que é e como funciona

Dentro do KY-023 existem dois potenciômetros de 10 kΩ. Um gira quando você move a alavanca no eixo X (horizontal), o outro no eixo Y (vertical). Cada um funciona como um divisor de tensão: a alavanca move o cursor e a tensão de saída muda proporcionalmente.

Uma mola central devolve a alavanca ao meio quando você solta. Nessa posição, cada potenciômetro fica na metade do curso — e entrega metade da tensão de alimentação.

Centro ≈ VCC ÷ 2Com 5 V, o centro fica em ~2,5 V, que o Arduino lê como ~512.

🔢 A leitura no Arduino

O conversor analógico-digital do Arduino tem 10 bits: ele transforma a tensão num número de 0 a 1023.

Posição da alavancaTensão aproximadaLeitura
Totalmente para um lado0 V0
Centro (solta)2,5 V~512
Totalmente para o outro5 V1023
🔎 Detalhe: o centro quase nunca dá 512 exatos. É comum ler 498, 507, 521. Isso é normal — tolerância dos componentes — e é justamente por isso que existe a zona morta.

🔌 Os 5 pinos

  • GND e +5V: alimentação dos dois potenciômetros.
  • VRx: saída analógica do eixo X → entrada A0 (ou outra analógica).
  • VRy: saída analógica do eixo Y → entrada A1.
  • SW: o botão de apertar a alavanca. Vai para uma entrada digital com pull-up.
🌡️ O botão precisa de pull-up: o pino SW fica solto quando o botão não está pressionado. Sem INPUT_PULLUP no código (ou um resistor externo), ele flutua e dispara sozinho.

⚠️ Zona morta: o problema que todo mundo tem

Se você mandar o motor girar sempre que a leitura for diferente de 512, o robô vai andar sozinho com a alavanca parada. Porque o centro real oscila alguns pontos para cima e para baixo o tempo todo.

A solução é a zona morta: uma faixa em torno do centro onde você simplesmente ignora a leitura.

📖 Como definir a zona morta

1) Com a alavanca solta, leia os dois eixos e anote. Digamos: X = 507, Y = 514.

2) Observe a variação. Se X oscila entre 503 e 511, a folga é de ±4.

3) Adote uma margem maior que a folga — normalmente ±30 a ±50 já resolve com sobra.

4) No código: se a leitura estiver entre 507−40 e 507+40, trate como parado.

Centro medido 507 · zona morta de 467 a 547 · fora disso, movimento

🎯 Onde usar

  • Controle de robôs e carrinhos.
  • Movimento de braço robótico e garra.
  • Navegação em menus de display.
  • Controle de câmera em suporte pan-tilt.
  • Joguinhos em matriz de LED ou OLED.

🆚 Joystick x outros controles

Joystick analógico
  • Informa direção e intensidade
  • 2 entradas analógicas
  • Movimento proporcional
  • Precisa de zona morta
Botões / D-pad
  • Só liga ou desliga
  • Entradas digitais
  • Velocidade fixa
  • Muito mais simples

🛠️ Problemas comuns

SintomaCausa provávelSolução
Robô anda sozinhoSem zona mortaIgnore a faixa em torno do centro
Eixos trocadosVRx e VRy invertidosTroque os fios ou os pinos no código
Movimento invertidoOrientação do móduloInverta o sinal no código: 1023 − leitura
Botão dispara sozinhoPino SW flutuandoUse INPUT_PULLUP
Leitura instávelAlimentação ruidosaAlimente com 5 V estável e faça média de leituras
Não chega a 0 nem a 1023Normal em módulos baratosUse map() com os valores reais medidos
🛒 Na Mamute tem o módulo KY-023, placas Arduino e os jumpers para ligar os 5 fios sem improviso.

🚀 Conclusão

O joystick é um dos módulos mais simples de ligar e um dos que mais dão dor de cabeça — sempre pelo mesmo motivo: a zona morta.

Meça o centro real, defina uma margem confortável e trate o botão com pull-up. Com esses três cuidados, ele funciona liso.

Vai controlar o quê primeiro? Conta pra gente! 🦣⚡

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

O joystick é analógico puro — precisa de uma placa com ADC para virar movimento, e dos jumpers para os 5 fios.