Arduino Nano ESP32 - Joystick - Servo Motor
Neste tutorial, vamos aprender como usar o Arduino Nano ESP32 e um joystick para controlar dois servo motores ou um kit pan-tilt com servos.
Um joystick tem dois potenciômetros embutidos em ângulo reto entre si (chamados de eixo X e eixo Y). Esses potenciômetros fornecem valores analógicos (chamados de valor X e valor Y) nos pinos VRX e VRY. Vamos usar esses valores analógicos para controlar dois servo motores de forma independente: o valor X controla o servo #1 e o valor Y controla o servo #2. No caso do kit pan-tilt, o movimento dos dois servo motores cria um movimento 3-D.
Existem dois casos de uso:
- Caso de uso 1: Os servo motores giram de acordo com o movimento do manche do joystick:
- Os ângulos dos servo motores são proporcionais aos valores X e Y do joystick.
- Quando soltamos o manche do joystick ⇒ todos os valores voltam aos valores centrais ⇒ os servo motores voltam automaticamente para a posição central
- Caso de uso 2: usar o joystick para comandar os servo motores (comandos para cima/baixo/esquerda/direita)
- Quando o manche do joystick é empurrado para a esquerda, move o servo motor #1 no sentido horário passo a passo
- Quando o manche do joystick é empurrado para a direita, move o servo motor #1 no sentido anti-horário passo a passo
- Quando o manche do joystick é empurrado para cima, move o servo motor #2 no sentido horário passo a passo
- Quando o manche do joystick é empurrado para baixo, move o servo motor #2 no sentido anti-horário passo a passo
- Quando soltamos o manche do joystick ⇒ os servo motores não voltam para a posição central
- Se o joystick for pressionado (botão de pressão), os servo motores voltam para a posição central
- Se você é novo no Arduino Nano ESP32, consulte o tutorial sobre como configurar o ambiente para o Arduino Nano ESP32 na Arduino IDE.
- Ligue os componentes de acordo com o diagrama fornecido.
- Conecte a placa Arduino Nano ESP32 ao seu computador usando um cabo USB.
- Abra a Arduino IDE no seu computador.
- Selecione a placa Arduino Nano ESP32 e a porta COM correspondente.
- Clique no ícone Libraries na barra à esquerda da Arduino IDE.
- Digite ESP32Servo na caixa de pesquisa e procure a biblioteca de servo de Kevin Harrington,John K. Bennett.
- Clique no botão Install para instalar a biblioteca de servo motor para o Arduino Nano ESP32.
- Copie o código acima e abra com a Arduino IDE
- Clique no botão Upload na Arduino IDE para fazer upload do código para o Arduino Nano ESP32
- Abra o Serial Monitor
- Empurre o joystick em alguma direção
- Veja a rotação do servo motor
- Veja o resultado no Serial Monitor
- Abra o Library Manager clicando no ícone Library Manager na barra de navegação à esquerda da Arduino IDE
- Pesquise “ezButton” e encontre a biblioteca de botão da ArduinoGetStarted.com
- Clique no botão Install para instalar a biblioteca ezButton.
- Copie o código acima e abra com a Arduino IDE
- Clique no botão Upload na Arduino IDE para fazer upload do código para o Arduino Nano ESP32
- Abra o Serial Monitor
- Empurre o joystick em alguma direção
- Veja a rotação do servo motor
- Veja o resultado no Serial Monitor
- O ADC do Arduino Nano ESP32 não é perfeitamente preciso e pode exigir calibração para resultados corretos. Cada placa Arduino Nano ESP32 pode variar um pouco, então a calibração é necessária para cada placa individualmente.
- A calibração pode ser difícil, especialmente para iniciantes, e nem sempre pode dar os resultados exatos que você quer.
Vamos explorar o código dos dois casos de uso nas próximas partes.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Buy Note: For controlling multiple servo motors, use the PCA9685 16 Channel PWM Servo Driver Module to save MCU pins and simplify wiring.
Sobre o Joystick e o Servo Motor
Se você não conhece o joystick e o servo motor (pinagem, como funcionam, como programar ...), aprenda sobre eles nos seguintes tutoriais:
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Código Arduino Nano ESP32
Código Arduino Nano ESP32 - Os servo motores giram de acordo com o movimento do manche do joystick
Passos Rápidos
Para começar com o Arduino Nano ESP32, siga estes passos:


Você pode ter notado que o servo motor não se move proporcionalmente ao movimento do joystick. Esse problema não é causado pelo joystick nem pelo servo motor em si, mas sim pelo ADC do Arduino Nano ESP32. O final deste tutorial explicará por que isso acontece.
Código Arduino Nano ESP32 - Usar o joystick para comandar os servo motores
Passos Rápidos

Explicação do Código
Leia a explicação linha por linha nas linhas de comentário do código-fonte!
※ Nota:
Este tutorial usa a função analogRead() para ler valores de um ADC (Conversor Analógico-Digital) conectado a um sensor ou componente. O ADC do Arduino Nano ESP32 é adequado para projetos que não exigem alta precisão. No entanto, para projetos que precisam de medições precisas, tenha em mente o seguinte:
Para projetos que exigem alta precisão, considere usar um ADC externo (por exemplo, ADS1115) com o Arduino Nano ESP32 ou usar outro Arduino, como o Arduino Uno R4 WiFi, que tem um ADC mais confiável. Se você ainda quiser calibrar o ADC do Arduino Nano ESP32, consulte o ESP32 ADC Calibration Driver.