Arduino - Potenciômetro Aciona Servo Motor
Em um tutorial anterior, aprendemos a girar o servo motor de acordo com o valor de saída do potenciômetro. Neste tutorial, vamos aprender a:
- Se o valor analógico do potenciômetro for maior que um limite, girar o servo motor para 90 graus
- Se o valor analógico do potenciômetro for menor que um limite, girar o servo motor de volta para 0 grau.
- Se a tensão de saída do potenciômetro for maior que um limite, girar o servo motor para 90 graus
- Se a tensão de saída do potenciômetro for menor que um limite, girar o servo motor de volta para 0 grau.
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ê ainda não conhece o servo motor e o potenciômetro (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 - Limite Analógico
/*
* 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-potentiometer-triggers-servo-motor
*/
#include <Servo.h>
// constants won't change
const int POTENTIOMETER_PIN = A0; // Arduino pin connected to Potentiometer pin
const int SERVO_PIN = 9; // Arduino pin connected to Servo Motor's pin
const int ANALOG_THRESHOLD = 500;
Servo servo; // create servo object to control a servo
void setup() {
servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object
servo.write(0);
}
void loop() {
int analogValue = analogRead(POTENTIOMETER_PIN); // read the input on analog pin
if(analogValue > ANALOG_THRESHOLD)
servo.write(90); // rotate servo motor to 90 degree
else
servo.write(0); // rotate servo motor to 0 degree
}
Passos Rápidos
- Conecte o Arduino ao PC via cabo USB
- Abra o Arduino IDE, selecione a placa e a porta corretas
- Copie o código acima e abra-o no Arduino IDE
- Clique no botão Upload no Arduino IDE para carregar o código no Arduino
- Gire o potenciômetro
- Observe a mudança do servo motor
Código Arduino - Limite de Tensão
O valor analógico do potenciômetro é convertido em valor de tensão e, em seguida, comparado a um limite de tensão para acionar o servo motor
/*
* 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-potentiometer-triggers-servo-motor
*/
#include <Servo.h>
// constants won't change
const int POTENTIOMETER_PIN = A0; // Arduino pin connected to Potentiometer pin
const int SERVO_PIN = 9; // Arduino pin connected to Servo Motor's pin
const float VOLTAGE_THRESHOLD = 2.5; // Voltages
Servo servo; // create servo object to control a servo
void setup() {
servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object
servo.write(0);
}
void loop() {
int analogValue = analogRead(POTENTIOMETER_PIN); // read the input on analog pin
float voltage = floatMap(analogValue, 0, 1023, 0, 5); // Rescale to potentiometer's voltage
if(voltage > VOLTAGE_THRESHOLD)
servo.write(90); // rotate servo motor to 90 degree
else
servo.write(0); // rotate servo motor to 0 degree
}
float floatMap(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}