Controlando Dois Servos Motores com Potenciômetros no Arduino Uno
Controlando Dois Servos Motores com Potenciômetros no Arduino Uno
Neste tutorial, vamos aprender como controlar dois servos motores usando dois potenciômetros com o Arduino Uno. Isso permitirá ajustar a posição angular de cada servo manualmente, girando os potenciômetros.
📌 Materiais Necessários
Arduino Uno
2 × Servo Motores (ex.: SG90)
2 × Potenciômetros (10kΩ recomendado)
Protoboard e jumpers
Fonte de alimentação (se necessário)
🔌 Circuito: Ligação dos Componentes
1. Conexão dos Servos
Servo 1
Fio Laranja (Sinal) → Pino 9 do Arduino
Fio Vermelho (VCC) → 5V do Arduino
Fio Marrom (GND) → GND do Arduino
Servo 2
Fio Laranja (Sinal) → Pino 10 do Arduino
Fio Vermelho (VCC) → 5V do Arduino
Fio Marrom (GND) → GND do Arduino
2. Conexão dos Potenciômetros
Potenciômetro 1 (Controla Servo 1)
Pino central (wiper) → A0 (Entrada analógica)
Pino lateral → 5V
Pino outro lateral → GND
Potenciômetro 2 (Controla Servo 2)
Pino central (wiper) → A1 (Entrada analógica)
Pino lateral → 5V
Pino outro lateral → GND
(Imagem ilustrativa)
💻 Programação no Arduino IDE
O código abaixo lê os valores dos potenciômetros (0-1023) e os converte em ângulos (0°-180°) para controlar os servos.
#include <Servo.h> // Biblioteca para controlar os servos Servo servo1; // Cria um objeto Servo1 Servo servo2; // Cria um objeto Servo2 void setup() { servo1.attach(9); // Servo1 no pino 9 servo2.attach(10); // Servo2 no pino 10 } void loop() { // Lê o valor do potenciômetro 1 (0-1023) e mapeia para 0-180° int angulo1 = map(analogRead(A0), 0, 1023, 0, 180); servo1.write(angulo1); // Move o servo1 para a posição // Lê o valor do potenciômetro 2 (0-1023) e mapeia para 0-180° int angulo2 = map(analogRead(A1), 0, 1023, 0, 180); servo2.write(angulo2); // Move o servo2 para a posição delay(15); // Pequeno atraso para estabilidade }
📝 Explicação do Código
#include <Servo.h>
→ Importa a biblioteca para controle de servos.Servo servo1, servo2
→ Cria dois objetos para os servos.servo1.attach(9)
→ Associa o servo1 ao pino digital 9.map(analogRead(A0), 0, 1023, 0, 180)
→ Converte o valor analógico (0-1023) em um ângulo (0°-180°).servo1.write(angulo1)
→ Envia o comando de posição ao servo.delay(15)
→ Evita leituras muito rápidas, garantindo estabilidade.
⚡ Funcionamento do Sistema
Quando você gira o Potenciômetro 1, o Servo 1 se move proporcionalmente.
Quando você gira o Potenciômetro 2, o Servo 2 se move proporcionalmente.
O Arduino lê continuamente os valores dos potenciômetros e atualiza a posição dos servos.
🔧 Possíveis Problemas e Soluções
Problema | Solução |
---|---|
Servo não se move | Verifique conexões e alimentação 5V |
Movimento irregular | Use um capacitor no servo ou fonte externa |
Valores instáveis | Verifique aterramento e jumpers soltos |
🚀 Aplicações Práticas
Braço robótico controlado manualmente
Câmera de vigilância com movimento ajustável
Controle de direção em veículos RC
Comentários
Postar um comentário