I Need Help with Servo Motors Help Me ASAP!!!

Hello! I am fairly new to Arduino. I have an Arduino Uno, and two continuous rotation servos (GWS S35/STD). I am creating a very simple 6-legged robot, with each motor controlling each side.

I am having issues on "synchronizing" the two motors so that they turn at the exact speed, and if one stalls, I need the other to wait for it.

I really really need help very soon, as I must get this part done by April 2nd.

Thank you very much!

How are you going to detect when one servo stalls? Below is some code that might be of use checking the command vs. rotation speeds of your servos.

// zoomkat 3-28-14 serial servo incremental test code
// using serial monitor type a character (s to increase or a 
// to decrease) and enter to change servo position 
// (two hands required, one for letter entry and one for enter key)
// use strings like 90x or 1500x for new servo position 
// for IDE 1.0.5 and later
// Powering a servo from the arduino usually *DOES NOT WORK*.

#include<Servo.h>
String readString;
Servo myservo;
int pos=1500; //~neutral value for continous rotation servo
//int pos=90;

void setup()
{
  myservo.attach(7, 400, 2600); //servo control pin, and range if desired
  Serial.begin(9600);
  Serial.println("serial servo incremental test code");
  Serial.println("type a character (s to increase or a to decrease)");
  Serial.println("and enter to change servo position");
  Serial.println("use strings like 90x or 1500x for new servo position");
  Serial.println();
}

void loop()
{
  while (Serial.available()) {
    char c = Serial.read();  //gets one byte from serial buffer
    readString += c; //makes the string readString
    delay(2);  //slow looping to allow buffer to fill with next character
  }
  if (readString.length() >0) {
    if(readString.indexOf('x') >0) { 
      pos = readString.toInt();
    }

    if(readString =="a"){
      (pos=pos-1); //use larger numbers for larger increments
      if(pos<0) (pos=0); //prevent negative number
    }
    if (readString =="s"){
      (pos=pos+1);
    }

    if(pos >= 400) //determine servo write method
    {
      Serial.println(pos);
      myservo.writeMicroseconds(pos);
    }
    else
    {   
      Serial.println(pos);
      myservo.write(pos); 
    }
  }
  readString=""; //empty for next input
}

The (A ?) usual way to get motors going at the same speed (usual for DC motors anyway, I suppose it would work for continuous rotation servos) is to use some kind of encoder. You measure / calculate the speed of each, and apply a factor to one's signal to get them the same. This looks like a good explanation, although I haven't read it thoroughly.

professorpancake21:
I really really need help very soon, as I must get this part done by April 2nd.

This is not a simple issue. You should have asked your question on Feb 2nd or Jan 2nd.

…R

Thank you very much for your help! However, I have instead decided to make my robot 8-legged, so no matter how unregulated the motors are, it is still stable enough.