Buenas.
Os comento que es lo que me sucede!!!
Tengo un servo de 360º que quiero usar en la cabeza de un PING))) que gira 180º de izquierda a derecha y de derecha a izquierda; haciendo una analogía con las agujas del reloj, que vaya de 9 a 3, y de 3 a 9. El servo es este:
http://www.bricogeek.com/shop/motores/118-servomotor-de-rotacion-continua-s35-std.html ,
que me dice que la velocidad de rotación (6V): 0,13 sec / 60°. Yo alimento el servo, por ahora mientras hago pruebas, directamente con Arduino Mega 2560. Luego, cuando consiga lo que busco lo alimentaré, junto con otros dos servos más, tres en total, con 4 pilas de 1'5V, o sea, 6V. En un vídeo vi que haciendo servo.write(0) ponía el servo en la posición 0º, servo.write(90) en 90º y que servo.write(180) en 180º. Luego con un delay de 1000ms en las lineas, pues colocaba a 0º, 90º y 180º con un retardo de un segundo. Lo pruebo y nada... me hace un par de extraños... y me doy cuenta de que mi servo, al hacerle el servo.write(0) gira de manera continuada en el sentido de las agujas del reloj, y si le hago un servo.write(180) gira en el sentido contrario a las agujas del reloj. Pienso un poco y digo... pues nada, le digo que servo.write(0) durante lo que tarde en hacer 180º con el delay, y cuando llegue que vaya en sentido contrario con servo.write(180) durante el mismo tiempo para que haga otros 180º:
#include <Servo.h>
Servo servo;
void setup()
{
  servo.attach(7);
}
void loop()
{
  servo.write(0);
  delay(1175);
  servo.write(180);
  delay(1175);
}
PROBLEMA:
Resulta que no va, volviendo a la analogía del reloj, de 9 a 3 y de 3 a 9. Yo lo coloco como punto de partida como punto de partida de 9 a 3, horizontal o si lo prefieres alineado como eje X, y lo que hace es ir de 9 a 3'1, de 3'1 a a 9'1, de 9'1 a 3'2, de 3'2 a 9'2... y así que poco a poco, termina alineado con el eje Y, termina puesto de 12 a 6 en el reloj.
Sigo pensando... y si al llegar al final del recorrido el siguiente delay empieza a contar pero el motor pierde unas milésimas en empezar a girar para el otro sentido y así se estropea??? Voy probando valores pero me dicen por ahí que no juegue con los valores del delay que cuando lo consiga después de mil pruebas, cuando conecte otros motores con sus delays, el sensor PING)))... pues va a tardar mucho en trabajar... que Arduino Mega trabaja con un reloj de 16Mhz... Me sugieren que haga un for al que voy cambiando los valores del bucle, sin tocar un delay de 1ms, con este código:
#include <Servo.h>
Servo servo;
int i;
  
void setup()
{
  servo.attach(7);
}
void loop()
{
  for(i=0; i<=180; i++) //180 es lo que voy modificando
  {
    servo.write(i);
    delay(1);
  }
  
  for(i=180; i<=0; i--)
  {
    servo.write(i);
    delay(1);
  }
}
....... Me hace cosas raras, hasta el punto de que cuando reduzco mucho los valores del bucle, de 180 a 50 por ejemplo... el segundo for parece que termina bloqueado, el motor vibra y ni se mueve... o sea, que no funciona mucho este método.
Así que después de esta parrafada que espero hayáis entendido, no se si me he explicado bien, pues si alguien pudiera ayudarme le estaría muy agradecido!!!! MUCHO!!! Por cierto, ya me han sugerido que me compre un servo de 180º, que para eso están... pero claro... no me quiero rendir con el que tengo ni tampoco me quiero gastar más dinero, así que... POR FAVOR, AYUDA!!!
Gracias.