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

Circuito Arduino Uno + 2 Servos + 2 Potenciômetros (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.

cpp
Copy
Download
#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

  1. #include <Servo.h> → Importa a biblioteca para controle de servos.

  2. Servo servo1, servo2 → Cria dois objetos para os servos.

  3. servo1.attach(9) → Associa o servo1 ao pino digital 9.

  4. map(analogRead(A0), 0, 1023, 0, 180) → Converte o valor analógico (0-1023) em um ângulo (0°-180°).

  5. servo1.write(angulo1) → Envia o comando de posição ao servo.

  6. 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

ProblemaSolução
Servo não se moveVerifique conexões e alimentação 5V
Movimento irregularUse um capacitor no servo ou fonte externa
Valores instáveisVerifique 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

Postagens mais visitadas