Arduino - Servo Motor Controlado por Potenciômetro
Em um tutorial anterior, aprendemos como um potenciômetro aciona um servo motor. Neste tutorial, vamos aprender a girar um servo motor de acordo com o valor de saída do potenciômetro
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 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 o servo motor e o potenciômetro (pinagem, como funciona, como programar...), aprenda sobre eles nos seguintes tutoriais:
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Como Programar
- Lê o valor do potenciômetro (valor entre 0 e 1023)
int analogValue = analogRead(A0);
- Converte o valor para um ângulo (valor entre 0 e 180)
int angle = map(analogValue, 0, 1023, 0, 180);
- Define a posição do servo de acordo com o ângulo
myServo.write(angle);
Código Arduino
/*
* Este código de Arduino foi desenvolvido por pt.newbiely.com
* Este código de Arduino é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/arduino/arduino-servo-motor-controlled-by-potentiometer
*/
#include <Servo.h>
Servo myServo; // create servo object to control a servo
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
myServo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
// reads the value of the potentiometer (value between 0 and 1023)
int analogValue = analogRead(A0);
// scales it to use it with the servo (value between 0 and 180)
int angle = map(analogValue, 0, 1023, 0, 180);
// sets the servo position according to the scaled value
myServo.write(angle);
// print out the value
Serial.print("Analog: ");
Serial.print(analogValue);
Serial.print(", Angle: ");
Serial.println(angle);
delay(100);
}
Passos Rápidos
- Conecte o Arduino ao PC usando o cabo USB
- Abra a Arduino IDE, selecione a placa e a porta corretas
- Copie o código acima e abra-o na Arduino IDE
- Clique no botão Upload na Arduino IDE para carregar o código no Arduino

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