help needed for changing the speed of a continuous servo

Recently modified a standard servo into a continuous servo. I would like to control the speed of its' rotations.
I've tried changing the degrees of its rotation and changing the delaying time, but it changed nothing.
Any suggestions?

You need to find the centre, “stop” position, preferably using “Servo::writeMicroseconds”, then vary the pulse width very slightly either side of that value.
You may find speed control is load-dependent.

sophia:
Recently modified a standard servo into a continuous servo. I would like to control the speed of its' rotations.
I've tried changing the degrees of its rotation and changing the delaying time, but it changed nothing.
Any suggestions?

Please post your code. Your mention of changing the delaying time makes no sense in the context of setting the speed of a continuous servo. It sounds as though you are using a for loop to send position values to servo.write() and delaying between them as you might for a normal servo. This is not how you control the speed of a continuous servo. See the reply from AWOL.

You cannot control the speed per-se on a servo modified for continous rotation.

On some digital servos, if you want the servo to move a small amount, it will run the motor slower, than if you tell it to move a large amount - I've tried this with some of the more expensive Hyperion servo's - the problem is, after some seconds, the electronics gets confused and lowers the speed, so it's not a viable way of doing things.

// Per.

Zapro:
You cannot control the speed per-se on a servo modified for continous rotation.

Yes, you can. For each server there will be a pulse length corresponding to the neutral position. When you send this pulse length the servo will not move. Altering the pulse length either side of that value will cause the servo to move forward or backwards, and the further away you go from that neutral value the greater the speed (until you reach the servo's maximum speed).

PeterH:

Zapro:
You cannot control the speed per-se on a servo modified for continous rotation.

Yes, you can. For each server there will be a pulse length corresponding to the neutral position. When you send this pulse length the servo will not move. Altering the pulse length either side of that value will cause the servo to move forward or backwards, and the further away you go from that neutral value the greater the speed (until you reach the servo's maximum speed).

It depends on, if the servo is Analog or Digital ...

// Per

Zapro:
It depends on, if the servo is Analog or Digital ...

It certainly should be possible to control the speed for 'continuous rotation servos' made from analog servos. I'm not sure why you'd want to butcher a digital servo for continuous rotation (it seems to negate the main benefit of the digital controller) but even if you did it would still provide a proportional feedback which I would expect to provide proportional speed control.

Code you can use to test your servo.

// zoomkat 10-22-11 serial servo test
// type servo position 0 to 180 in serial monitor
// or for writeMicroseconds, use a value like 1500
// for IDE 0022 and later
// Powering a servo from the arduino usually *DOES NOT WORK*.

String readString;
#include <Servo.h> 
Servo myservo;  // create servo object to control a servo 

void setup() {
  Serial.begin(9600);
  myservo.writeMicroseconds(1500); //set initial servo position if desired
  myservo.attach(7, 500, 2500);  //the pin for the servo control, and range if desired
  Serial.println("servo-test-22-dual-input"); // so I can keep track of what is loaded
}

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) {
    Serial.println(readString);  //so you can see the captured string 
    int n = readString.toInt();  //convert readString into a number

    // auto select appropriate value, copied from someone elses code.
    if(n >= 500)
    {
      Serial.print("writing Microseconds: ");
      Serial.println(n);
      myservo.writeMicroseconds(n);
    }
    else
    {   
      Serial.print("writing Angle: ");
      Serial.println(n);
      myservo.write(n);
    }

    readString=""; //empty for next input
  } 
}