O sketch possibilita o controle dos seis servos simultaneamente, resultando em movimentos mais suaves. Um buser conectado ao pino D9, gera um som a cada movimento.
// Programa de controle do manipulador de 6 graus
#include <Servo.h>
Servo myservo0;
Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;
Servo myservo5;
int retardo = 10;
int potpin0 = 0;
int val0 = 84;
int potpin1 = 1;
int val1 = 78;
int potpin2 = 2;
int val2 = 150;
int potpin3 = 3;
int val3 = 98;
int potpin4 = 4;
int val4 = 57;
int potpin5 = 5;
int val5 = 90;
int pausa = 1000;
int pausaMove = 10;
void setup() {
Serial.begin(9600);
myservo0.attach(2);
myservo1.attach(3);
myservo2.attach(4);
myservo3.attach(5);
myservo4.attach(6);
myservo5.attach(7);
pinMode(13, OUTPUT);
//Posiçao Inicial
myservo0.write(val0);
myservo1.write(val1);
myservo2.write(val2);
myservo3.write(val3);
myservo4.write(val4);
myservo5.write(val5);
}
void loop() {
/*
Cada um dos parâmetros da função "Movimento" representa a próxima posição dos servos;
As variáveis que receberão os parâmetros estão na ordem:
val0, val1, val2, val3, val4, val5;
*/
Movimento (167,102,167,170,57,48);
delay(pausa);
Movimento (77,65,101,180,34,52);
delay(pausa);
Movimento (15,97,173,170,34,30);
delay(pausa);
Movimento (77,65,101,180,34,52);
delay(pausa);
Movimento (84,78,150,115,57,90);
delay(pausa);
Movimento (77,65,101,180,34,52);
delay(pausa);
tone(9,1000,1000);
delay(3000);
}
void Movimento(int servo0, int servo1, int servo2, int servo3, int servo4, int servo5){
tone(9,800,500);
for (int i = 0; i <= 100; i++) {
float a = map(i, 0, 100, val0 * 100 , servo0 * 100);
a = a / 100;
myservo0.write(a);
float b = map(i, 0, 100, val1 * 100 , servo1 * 100);
b = b / 100;
myservo1.write(b);
float c = map(i, 0, 100, val2 * 100, servo2 * 100);
c = c / 100;
myservo2.write(c);
float d = map(i, 0, 100, val3 * 100, servo3 * 100);
d = d / 100;
myservo3.write(d);
float e = map(i, 0, 100, val4 * 100 , servo4 * 100);
e = e / 100;
myservo4.write(e);
float f = map(i, 0, 100, val5 * 100 , servo5 * 100);
f = f / 100;
myservo5.write(f);
delay(pausaMove);
/*
Serial.print(" Tempo de espera : ");
Serial.print(pausaMove);
Serial.print(" Val0 : ");
Serial.print(a);
Serial.print(" Val1 : ");
Serial.print(b);
Serial.print(" Val2 : ");
Serial.print(c);
Serial.print(" Val3 : ");
Serial.print(d);
Serial.print(" Val4 : ");
Serial.print(e);
Serial.print(" Val5 : ");
Serial.println(f);
*/
}
val0 = servo0;
val1 = servo1;
val2 = servo2;
val3 = servo3;
val4 = servo4;
val5 = servo5;
}
Nenhum comentário:
Postar um comentário