Servo not moving to < 8

Hi,

I just start playing around with the Arduino and bought a cheap servo (Carson CS-3) to play around with.

Now I have a simple code to move the servo to the position I enter:

void loop()
{
  String content = "";
  char character;

  while (Serial.available())
  {
    character = Serial.read();
    content.concat(character);
    delay(10);
  }

  if (content != "")
  {
    Serial.println("Moving to: " + content);
    int winkel = content.toInt();
    motor1.write(winkel);
  }
}

Everything works fine, except when I try to enter anything < 8. The servo sounds like it keeps trying to move forever.

Can someone explain that behavior to me?

Sounds like the servo has hit a physical end-stop and then works at full current trying to push past it.

Indicates that you shouldn't send it below 10 degrees perhaps? Different servos have different ranges
of movement, often less than 180 degrees total (remember these devices are really meant to move a
wing control surface via a crank linkage)

Ok, I always thought, that all servos go from 0 to 180.

No, they go from their minimum position to their maximum position.
The "angle" convention is just an abstraction and (sometimes) a convenience, saving the user having to think in microseconds.

AWOL:
No, they go from their minimum position to their maximum position.
The "angle" convention is just an abstraction and (sometimes) a convenience, saving the user having to think in microseconds.

Exactly, and the servo library use of default minimum and maximum pulse values can be a source of problems for many servos. So the 'angle' abstraction and the assumption of pulse width range reflects somewhat poorly in the servo library's design and source of many of the problems beginners post here on their servo applications, in my opinion. But to it's credit it least does have the servo.writeMicrosecond command available for those that do understand basic servo design and use.

Lefty

Thanks guys, guess I've learned something today.