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°:
#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:
Conecte os 5 servos aos pinos digitais 8, 9, 10, 11 e 12 do Arduino
Certifique-se de que a alimentação dos servos seja adequada (use uma fonte externa se necessário)
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
Postar um comentário