Arduino Nano - Potenciômetro Servo Motor
Este tutorial ensina você a usar o Arduino Nano 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
- Como programar o Arduino Nano para ler o valor de um potenciômetro e controlar um servo motor de acordo.
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 conhece servo motores e potenciômetros, incluindo suas pinagens, como funcionam e como programá-los, os tutoriais a seguir podem ajudar:
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Nano e outros componentes.
Como Programar
- Obtém o valor do potenciômetro, que é um número entre 0 e 1023.
int analog_value = analogRead(A0);
- Escala o valor para um ângulo no intervalo de 0 a 180.
int angle = map(analog_value, 0, 1023, 0, 180);
- Controla o servo até o ângulo especificado.
servo.write(angle);
Código Arduino Nano
/*
* Este código de Arduino Nano foi desenvolvido por pt.newbiely.com
* Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-potentiometer-servo-motor
*/
#include <Servo.h>
Servo servo; // create servo object to control a servo
void setup() {
// Initialize the Serial to communicate with the Serial Monitor.
Serial.begin(9600);
servo.attach(2); // attaches the servo on pin D2 to the servo object
}
void loop() {
// reads the value of the potentiometer (value between 0 and 1023)
int analog_value = analogRead(A0);
// scales it to use it with the servo (value between 0 and 180)
int angle = map(analog_value, 0, 1023, 0, 180);
// sets the servo position according to the scaled value
servo.write(angle);
// print out the value
Serial.print("Analog: ");
Serial.print(analog_value);
Serial.print(", Angle: ");
Serial.println(angle);
delay(100);
}
Passos Rápidos
- Conecte o cabo USB ao Arduino Nano e ao PC.
- Abra o Arduino IDE e selecione a placa e a porta apropriadas.
- Abra o código no Arduino IDE.
- Para enviar o código para o Arduino Nano, pressione o botão Upload do Arduino IDE.

- Abra o Serial Monitor
- Gire o potenciômetro
- Observe a rotação do servo motor
- Confira o resultado no Serial Monitor
8
Serial.println("Hello World!");
Message (Enter to send message to 'Arduino Nano' 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
Veja a explicação linha por linha contida nos comentários do código-fonte!