Arduino Nano ESP32 - Potenciômetro Servo Motor
Este tutorial ensina como usar o Arduino Nano ESP32 para controlar o ângulo de um servo motor com base no valor de entrada de um potenciômetro. Em detalhes, vamos aprender:
- Como conectar o potenciômetro e o servo motor ao Arduino Nano ESP32
- Como programar o Arduino Nano ESP32 para ler o valor de um potenciômetro e controlar um servo motor de acordo com ele.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
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 Servo Motor e o Potenciômetro
Se você não está familiarizado com servo motores e potenciômetros, incluindo pinagem, funcionamento e programação, os tutoriais a seguir serão úteis:
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Como Programar
- Leia o valor do potenciômetro (variando de 0 a 1023)
int analog_value = analogRead(A3);
- Converta-o em um ângulo na faixa de 0 a 180.
int angle = map(analog_value, 0, 1023, 0, 180);
- Controle o servo para o ângulo especificado.
servo.write(angle);
Código Arduino Nano ESP32
/*
* Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com
* Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-potentiometer-servo-motor
*/
#include <ESP32Servo.h>
#define PIN_POTENTIOMETER A3 // The Arduino Nano ESP32 pin connected to potentiometer
#define PIN_SERVO D2 // The Arduino Nano ESP32 pin connected to servo motor
Servo servo; // create servo object to control a servo
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// set the ADC attenuation to 11 dB (up to ~3.3V input)
analogSetAttenuation(ADC_11db);
servo.attach(PIN_SERVO); // attaches the Arduino Nano ESP32 pin to the servo object
}
void loop() {
// reads the value of the potentiometer (value between 0 and 4095)
int analogValue = analogRead(PIN_POTENTIOMETER);
// scales it to use it with the servo (value between 0 and 180)
int angle = map(analogValue, 0, 4095, 0, 180);
// sets the servo position according to the scaled value
servo.write(angle);
// print out the value
Serial.print("Analog value: ");
Serial.print(analogValue);
Serial.print(" => Angle: ");
Serial.println(angle);
delay(100);
}
Passos Rápidos
- Se você é novo no Arduino Nano ESP32, consulte o tutorial sobre como configurar o ambiente do Arduino Nano ESP32 no Arduino IDE.
- Ligue os componentes como mostrado no diagrama.
- Conecte a placa Arduino Nano ESP32 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Escolha a placa Arduino Nano ESP32 e a porta COM correspondente.
- Copie o código acima e abra no Arduino IDE.
- Clique no botão Upload do Arduino IDE para transferir o código para o Arduino Nano ESP32.

- Abra o Serial Monitor
- Gire o potenciômetro
- Confira a rotação do servo motor
- Veja o resultado no Serial Monitor
8
Serial.println("Hello World!");
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Analog: 0, Angle: 0
Analog: 85, Angle: 14
Analog: 201, Angle: 35
Analog: 286, Angle: 50
Analog: 370, Angle: 65
Analog: 444, Angle: 78
Analog: 521, Angle: 91
Analog: 608, Angle: 106
Analog: 690, Angle: 121
Analog: 793, Angle: 139
Analog: 907, Angle: 159
Analog: 1023, Angle: 180
Analog: 1023, Angle: 180
Explicação do Código
Confira a explicação linha por linha contida nos comentários do código-fonte!