Mão Robótica - Programa para Controlar 5 Servos com Movimento Suave

 

Programa para Controlar 5 Servos com Movimento Suave

Aqui está um código Arduino que controla 5 servos motores conectados às portas digitais 8, 9, 10, 11 e 12, fazendo com que eles se movam suavemente de 0° a 120° e depois retornem a 0°:



cpp
Copy
Download
#include <Servo.h>

// Define os servos e seus pinos
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;

const int pinServo1 = 8;
const int pinServo2 = 9;
const int pinServo3 = 10;
const int pinServo4 = 11;
const int pinServo5 = 12;

// Configurações de movimento
const int posInicial = 0;
const int posFinal = 120;
const int delayEntrePassos = 20; // Tempo entre cada passo (em ms) - ajuste para velocidade desejada

void setup() {
  // Anexa os servos aos pinos
  servo1.attach(pinServo1);
  servo2.attach(pinServo2);
  servo3.attach(pinServo3);
  servo4.attach(pinServo4);
  servo5.attach(pinServo5);
  
  // Inicia todos os servos na posição 0
  moverServosPara(posInicial);
  
  // Pequena pausa para inicialização
  delay(1000);
}

void loop() {
  // Move os servos suavemente para 120°
  moverServosSuavemente(posInicial, posFinal);
  
  // Pequena pausa no topo
  delay(500);
  
  // Move os servos suavemente de volta para 0°
  moverServosSuavemente(posFinal, posInicial);
  
  // Pequena pausa na base
  delay(500);
}

// Função para mover todos os servos para uma posição específica
void moverServosPara(int posicao) {
  servo1.write(posicao);
  servo2.write(posicao);
  servo3.write(posicao);
  servo4.write(posicao);
  servo5.write(posicao);
}

// Função para mover todos os servos suavemente entre duas posições
void moverServosSuavemente(int inicio, int fim) {
  // Determina a direção do movimento
  int passo = (fim > inicio) ? 1 : -1;
  
  // Move os servos grau por grau
  for (int pos = inicio; pos != fim; pos += passo) {
    servo1.write(pos);
    servo2.write(pos);
    servo3.write(pos);
    servo4.write(pos);
    servo5.write(pos);
    delay(delayEntrePassos); // Ajuste este valor para controlar a velocidade
  }
  
  // Garante que todos chegaram na posição final exata
  moverServosPara(fim);
}

Como usar o código:

  1. Conecte os 5 servos aos pinos digitais 8, 9, 10, 11 e 12 do Arduino

  2. Certifique-se de que a alimentação dos servos seja adequada (use uma fonte externa se necessário)

  3. Carregue este código no Arduino

Personalização:

  • Para ajustar a velocidade, mude o valor de delayEntrePassos:

    • Valores maiores = movimento mais lento

    • Valores menores = movimento mais rápido

  • Para mudar o ângulo final, altere o valor de posFinal

  • Para adicionar mais tempo nas extremidades, aumente os valores dos delay(500)

Observações:

  • Este código faz todos os servos se moverem simultaneamente e de forma sincronizada

  • O movimento é suave porque cada servo se move grau por grau, com uma pequena pausa entre cada passo

  • Certifique-se de que seus servos suportem o intervalo de 0° a 120° (alguns servos têm limitação de 180° no total)

Comentários

Postagens mais visitadas