Pues listo. Está solucionado.
Gracias a esto:
Una cosa tonta, ¿cómo alimentas los servos? Ten en cuenta que no se pueden alimentar directamente desde el Arduino, tienes que ponerles una fuente externa.
ya he resuelto el problema. He alimentado el segundo servo con 4 pilas de 1'5V, he conectado masa a Arduino y he probado el código del que partía desde un principio, con la función que tomaba como parámetros dos objetos Servos.
El código final es el siguiente:
#include <Servo.h>
//Declaramos dos objetos Servo, uno por cada motor
Servo servo1;
Servo servo2;
//pingPin = 7 para el PING)))
const int pingPin = 7;
long duration, cm;
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
servo1.attach(3);
servo2.attach(5);
}
void loop()
{
//Este código del ejemplo PING del soft de Arduino 0022
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
cm = microsecondsToCentimeters(duration);
//Esta función hace girar los dos servos
servoDos(servo1, servo2);
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(150);
}
void servoDos(Servo ser1, Servo ser2)
{
if(cm >= 20)
{
ser1.write(0);
ser2.write(180);
}
if(cm <= 20)
{
ser1.write(180);
ser2.write(0);
}
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
Así que nada, muchas gracias por haberme ayudado, Cheyenne, "ere un maquina pixa"!!!