El servo de hobby necesita una señal como esta:
En una ventana de 20 ms, (50 veces por segundo) un pulso con un ancho de aproximadamente 1 ms y 2 ms (puede variar según el servo) con un punto medio de 1,5 ms. Entonces, en la ventana de 20 ms, hay casi el 90% del tiempo siendo "silencio" sin nivel de señal. El pulso solo es alto durante un período muy corto (relativamente).
Los pines Arduino tienen una salida predeterminada a 500Hz y 3.9Khz. No puede usar directamente el pin en modo PWM (con analogWrite), ya que recibirá los pulsos demasiado rápido y no funcionará / no funcionará.
La biblioteca Servo disponible para inclusión en un croquis de Arduino utiliza los temporizadores incorporados del ATMEGA328P (u otro chip, depende del tipo de arduino que estés usando) y de algunos software sofisticados e interrupciones para obtener el tiempo correcto de 50Hz y usos un pin de salida digital normal para enviar el pulso requerido.
Puede hacerlo usted mismo en un bucle simple, si solo controla 1 servo y tiene un programa simple, simplemente configurando un pin digital ALTO y luego retrasando (utilizando DelayMicroeconds) entre 1000 y 2000 microsegundos, dependiendo de la posición desea mover a, luego configurar el pin BAJO y retrasar (20,000 - el tiempo que retrasó para el servo).
Puede enviar la misma señal constantemente y el servo permanecerá en ese punto, o puede enviarla hasta que llegue allí y dejar de enviar una señal. El servo debe permanecer en ese punto, pero no creo que lo recuerde (puede moverlo con la mano y permanecerá en el nuevo punto hasta que se envíe una nueva señal).
Es mejor no usar las salidas de hardware PWM para que el Arduino controle un servo, incluso si logras escalar previamente los temporizadores a los 50 Hz requeridos (creo que esto sería difícil de conseguir, pero cree que puedes hacerlo!) ya que los registros de salida PWM deberán configurarse con una resolución de 8 bits en un pequeño rango de 10-20%, lo que solo te da 25 posiciones totales disponibles para el servo (eso es bastante malo, 25 posiciones) para un rango de movimiento completo de + -90 grados!). Así que ve con la Biblioteca de Servos, básicamente :)