6 continuous servo motor connect ti arduino mega

i have some problem about my continuous rotation servo, i use 6 of it with a arduino mega
-signal pin is connect to 23,25,27,29,31,33
-all positive is connect to external 5v power supply
-all gnd pin are connect to mega GND and power supply GND
After i upload the code, problem is coming. when i let any one servo move when it start and stop,others servo will move awhile. How to solve it? Ty for helping.

#include <Servo.h>

Servo myservo[6];

void setup() {
myservo[1].attach(23);
myservo[2].attach(25);
myservo[3].attach(27);
myservo[4].attach(29);
myservo[5].attach(31);
myservo[6].attach(33);
}

void loop() {

myservo[1].write(70);
delay(2000);
myservo[1].write(90);
delay(2000);
myservo[2].write(90);
myservo[3].write(90);
myservo[4].write(90);
myservo[5].write(90);
myservo[6].write(90);
}

I don't think 90 degrees will stop all CR servos.

I personally think it's a mistake to use angles when setting servo positions/speeds. I always use microseconds.

Try this program.

#include <Servo.h>

const int STOP = 1500;
const int FORWARD = 1300;

Servo myservo[6];

void setup() {
myservo[1].attach(23);
myservo[2].attach(25);
myservo[3].attach(27);
myservo[4].attach(29);
myservo[5].attach(31);
myservo[6].attach(33);

myservo[2].writeMicroseconds(STOP);
myservo[3].writeMicroseconds(STOP);
myservo[4].writeMicroseconds(STOP);
myservo[5].writeMicroseconds(STOP);
myservo[6].writeMicroseconds(STOP);
}

void loop() {

myservo[1].writeMicroseconds(FORWARD);
delay(2000);
myservo[1].writeMicroseconds(STOP);
delay(2000);
}

Let us know if it works.

Servo test code you might try with each servo to determine the neutral stopped command value for that servo. If the servo still has a pot that can be adjusted, then send the 1500 value and adjust the pot until the servo stops rotating.

// 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
}

zoomkat:
Servo test code you might try with each servo to determine the neutral stopped command value for that servo. If the servo still has a pot that can be adjusted, then send the 1500 value and adjust the pot until the servo stops rotating.

// 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
}

i already adjust all the servo stop when i write "myservo.write(90);"(90 for stop;0 for move clockwise with full speed;180 for move anticlockwise with full speed) ,but when i combine 1st servo with other servo it will move a bit when 1st servo start and stop.

i already adjust all the servo stop when i write "myservo.write(90);"(90 for stop;0 for move clockwise with full speed;180 for move anticlockwise with full speed) ,but when i combine 1st servo with other servo it will move a bit when 1st servo start and stop.

If the movement occurs when more than one servo is being commanded to move, your power supply may be weak causing transient conditions on the other servos. As previously mentioned, you should use writeMicroseconds for most accurate control. For DIY continuous rotation servos, the speed control range is usually from 1300us to 1700us writeMicroseconds commands. Do the servos randomly twitch when they are just sitting at a commanded position?

zoomkat:
If the movement occurs when more than one servo is being commanded to move, your power supply may be weak causing transient conditions on the other servos. As previously mentioned, you should use writeMicroseconds for most accurate control. For DIY continuous rotation servos, the speed control range is usually from 1300us to 1700us writeMicroseconds commands. Do the servos randomly twitch when they are just sitting at a commanded position?

I need to adjust the servo stop at 1500microsecond,right?(forgive my poor english)