3 Servomotores: Mano robótica

3 Servomotores: Mano robótica

En el siguiente programa mostramos un ejemplo de como mover un sistema de brazo y mano que tienen 3 servomotores.

 

#include <servo.h>

Servo servo_1; // Definimos el nombre de los servo que vamos a usar
Servo servo_2;
Servo servo_3;

int pos_servo_1 = 0; // definimos lasvariables de posición
int pos_servo_2 = 0;
int pos_servo_3 = 0;

int tiempo = 20; // definimos el tiempo entre pasos del servo (velocidad)
int pasos = 2;

void setup() {

servo_1.attach(7); // conectamos el servo_1 al pin 7
servo_2.attach(8); // conectamos el servo_2 al pin 8
servo_3.attach(9); // conectamos el servo_3 al pin 9
}

void loop()
{
servo_1.write(80); // ajustamos la posición inicial de cada servo
servo_2.write(90);
servo_3.write(90);

delay(500);

// Bajar brazo 90-10
for (pos_servo_2 = 90; pos_servo_2 >= 10 ; pos_servo_2 -= pasos) { 
servo_2.write(pos_servo_2); 
delay(tiempo);// 
}
// Cerrar mano 90-15
for (pos_servo_3 = 90; pos_servo_3 >= 15 ; pos_servo_3 -= pasos) { 
servo_3.write(pos_servo_3);
delay(tiempo);//
} 
// Subir brazo 10-90
for (pos_servo_2 = 10; pos_servo_2 <= 90; pos_servo_2 += pasos) {
servo_2.write(pos_servo_2);
delay(tiempo);//
}
// Girar izda 79-180
for (pos_servo_1 = 79; pos_servo_1 <= 180; pos_servo_1 += pasos) { 
servo_1.write(pos_servo_1);
delay(tiempo);//
} 
// Bajar brazo 90-25
for (pos_servo_2 = 90; pos_servo_2 >= 25 ; pos_servo_2 -= pasos) { 
servo_2.write(pos_servo_2); 
delay(tiempo);// 
}
// Abrir mano
for (pos_servo_3 = 15; pos_servo_3 <= 90; pos_servo_3 += pasos) { 
servo_3.write(pos_servo_3);
delay(tiempo);
}
// Subir brazo 25-90
for (pos_servo_2 = 205; pos_servo_2 <= 90; pos_servo_2 += pasos) {
servo_2.write(pos_servo_2);
delay(tiempo);//
}
// Girar dcha
for (pos_servo_1 = 180; pos_servo_1 >= 80 ; pos_servo_1 -= pasos) { 
servo_1.write(pos_servo_1);
delay(tiempo);
}

// Bajar brazo 90-15
for (pos_servo_2 = 90; pos_servo_2 >= 15 ; pos_servo_2 -= pasos) { 
servo_2.write(pos_servo_2); 
delay(tiempo);// 
}
// Cerrar mano 90-15
for (pos_servo_3 = 90; pos_servo_3 >= 15 ; pos_servo_3 -= pasos) { 
servo_3.write(pos_servo_3);
delay(tiempo);//
} 
// Subir brazo 15-90
for (pos_servo_2 = 15; pos_servo_2 <= 90; pos_servo_2 += pasos) {
servo_2.write(pos_servo_2);
delay(tiempo);//
}
// Girar izda 79-180
for (pos_servo_1 = 79; pos_servo_1 <= 180; pos_servo_1 += pasos) { 
servo_1.write(pos_servo_1);
delay(tiempo);//
} 
// Bajar brazo 90-25
for (pos_servo_2 = 90; pos_servo_2 >= 25 ; pos_servo_2 -= pasos) { 
servo_2.write(pos_servo_2); 
delay(tiempo);// 
}
// Abrir mano
for (pos_servo_3 = 15; pos_servo_3 <= 90; pos_servo_3 += pasos) { 
servo_3.write(pos_servo_3);
delay(tiempo);
}
// Subir brazo 10-90
for (pos_servo_2 = 25; pos_servo_2 <= 90; pos_servo_2 += pasos) {
servo_2.write(pos_servo_2);
delay(tiempo);//
}
// Girar dcha
for (pos_servo_1 = 180; pos_servo_1 >= 79 ; pos_servo_1 -= pasos) { 
servo_1.write(pos_servo_1);
delay(tiempo);
}
delay(500);