Un servomotor pueden ser programados para que su eje mantenga una determinada posición según el ángulo que se le indique al ser programador. Lo habitual es que ese ángulo oscile entre 0º y 180 º.

IMG 20190701 190238 7edae

En el artículo Conexión de servomotores para robótica puedes ver un ejemplo de cómo se podría hacer la conexión eléctrica de un servomotor con una placa Arduino usando  baterías externas. Recuerda que conviene que los motores reciban una alimentación eléctrica externa, y no usar la que pueda recibir directamente de la placa Arduino desde el USB, ya que el consumo eléctrico de los motores es elevado.

A continuación puedes ver un ejemplo sencillo de programación de un servomotor para que se posiciones inicialmente en el ángulo 90 para que posteriormente vaya posicionándose indefinidamente en los ángulos 0º, 45º, 90º, 135º, 180º.

Observa que siempre que se hace un movimiento se debe añadir una espera, ya que el motor tarda un pequeño tiempo en llegar a posicionarse en la posición indicada. Conviene realizar pruebas para comprobar el tiempo mínimo que se puede esperar o intentar obtener en la documentación del servomotor la información sobre su velocidad de giro. En el caso de los servomotores SG90 la velocidad indicada es de 0.1 segundos / 60º con un voltaje de 4,8 voltios (al incrementar el voltaje se aumenta la velocidad, pero hay un límite soportado).

// Requiere añadir la librería Servo.h
#include <Servo.h> 

// Declarar una variable que haga referencia al servomotor
Servo servo1;

void setup() { 
  // Asociar el servo al pin digital al que está conectado en la placa Arduino
  servo1.attach(2);
  // Mover el servo a un determinado ángulo (90º)
  servo1.write(90);
  // Esperar para dar tiempo a que se posicione el motor
  delay(300);  // 0.3 segundos
} 

void loop() {
  // Se repetirá todo este código indefinidamente
  servo1.write(0);    // Posicionar en 0º
  delay(300);    
  servo1.write(45);   // Posicionar en 45º
  delay(300);    
  servo1.write(90);   // Posicionar en 90º
  delay(300);    
  servo1.write(135);  // Posicionar en 135º
  delay(300);    
  servo1.write(180);  // Posicionar en 180º
  delay(300);    
}

Más ejemplos

En el artículo Programación del servo-motor SG90 con Arduino de este mismo sitio web puedes encontrar algunos ejemplos más que se han utilizado para mover el sensor de distancia de un coche robot con un servomotor.

Para saber más