Hace unos meses me compré cinco servomotores Tower Pro SG90 para hacer una manito. Recién tuve tiempo hoy de empezar a armar algo.
Si nunca usaste un servo, empezá por aprender a manejar un solo motor. Cada marca y modelo tiene diferentes colores de cables.
Atención: si lo conectás mal, el servo se quema. Yo ya quemé dos…
En el caso del Tower Pro SG90:
- el cable naranja es de datos,
- el rojo es positivo,
- el marrón negativo.
Tenemos que conectar los cuatro servos a positivo, negativo (GND) y después el cable naranja de cada servo va a un pin PWM diferente.
Los pines PWM son los que tienen el símbolo ~
Fuentes de energía
Cuando usamos cuatro servos, es necesario agregar energía externa, ya que exigen más de lo que la placa Arduino puede darles. Yo conecté un portapilas de cada lado, y dos servos de cada lado:
- Cable rojo al positivo, cable marrón al negativo.
- Cable naranja de cada servo a un pin PWM diferente.
El código
Como siempre, comencé por abrir el archivo de ejemplo para manejar servos. Y después lo modifiqué.
Para poder pegar los motores con cinta de papel a una cajita, empecé con un programita que apunta los cuatro servos a la posición 0.
#include <Servo.h>
Servo myservo; // esto está en el programa de ejemplo, yo agregué los otros
Servo myservo2;
Servo myservo3;
Servo myservo4;
void setup() {
myservo.attach(5); // un servo en cada pin
myservo2.attach(9);
myservo3.attach(10);
myservo4.attach(11);
}
void loop() {
myservo.write(0); // todos los servos van a la posición 0
myservo2.write(0);
myservo3.write(0);
myservo4.write(0);
delay(5000);}
Recién cuando pude poner los cuatro servos en la posición cero, los pegué en una cajita de cartón. Los dedos los hice con “limpiapipas” (alambre forrado, se usa en manualidades)
Ahora sólo queda programar el movimiento:
#include <Servo.h>
Servo myservo; // crear un objeto servo para cada motor
Servo myservo2;
Servo myservo3;
Servo myservo4;
void setup() {
myservo.attach(5); // declarar el pin en que se conecta cada servo
myservo2.attach(9);
myservo3.attach(10);
myservo4.attach(11);
}
void loop() {
myservo.write(0); // pongo todos los dedos en 0
myservo2.write(0);
myservo3.write(0);
myservo4.write(0);
delay(5000); // espero cinco segundos
myservo.write(90); // pongo todos los dedos en 90º
myservo2.write(90);
myservo3.write(90);
myservo4.write(90);
delay(1500); // espero un segundo y medio
myservo.write(180); // pongo todos los servos en 180º
myservo2.write(180);
myservo3.write(180);
myservo4.write(180);
delay(1500); // espero un segundo y medio
}
Este es el primer resultado:
En un segundo intento utilicé palitos de helado. Y armé una estructura de tres dedos, dos de ellos con una articulación (ahora con cinco servos).
Como los pares de pilas anteriores parecían insuficientes, ahora puse todos los motores en la misma fila y le conecté una batería de 9v.
El resultado me gusta más que en la prueba anterior:
Acá con unos movimientos más suaves (usando bucles for para cada movimiento):