Ejemplo1
Se va a mover el servo-motor desde el ángulo 0 al ángulo 180, y viceversa, de manera indefinida
// Para poder programar servo-motores se debe incluir la librería Servo.h #include <Servo.h> // Pin de la tarjeta Arduino donde se ha conectado el pin de señal del servo int pinServo1 = 7; // Variable que hace referencia al servo-motor Servo servo1; // Almacena el ángulo en el que se encuentre el servo-motor en cada momento int anguloServo = 90; // Incremento que se va a ir asignado al ángulo del servo-motor int incrementoAngulo = 1; void setup() { // Indicar con qué pin está asociado el servo-motor servo1.attach(pinServo1); // Posicionar inicialment el servo-motor en un ángulo concreto servo1.write(anguloServo); } void loop() { anguloServo += incrementoAngulo; // Si el servo-motor ha alcanzado el ángulo máximo, empezar a decrementarlo if(anguloServo == 180) { incrementoAngulo = -1; } // Si el servo-motor ha alcanzado el ángulo mínimo, empezar a incrementarlo if(anguloServo == 0) { incrementoAngulo = 1; } // Mover el servo-motor hasta el ángulo que se ha calculado servo1.write(anguloServo); // Esperar en esa posición un tiempo delay(10); }
Ejemplo2
Se va a mover el servo-motor entre 3 posiciones alternativamente: centro - derecha - centro - izquierda - centro - derecha ...
// Para poder programar servo-motores se debe incluir la librería Servo.h #include <Servo.h> // Pin de la tarjeta Arduino donde se ha conectado el pin de señal del servo int pinServo1 = 7; // Variable que hace referencia al servo-motor Servo servo1; // En este ejemplo, el servo-motor se va a ir posicionando sucesivamente // para mirar al centro, derecha e izquierda, por lo que se van a // almacenar en 3 constantes los ángulos que debe tomar el servo-motor // para tomar las posiciones deseadas const int ANGULO_CENTRO = 100; const int ANGULO_IZQUIERDA = 50; const int ANGULO_DERECHA = 150; // Almacena el ángulo en el que se encuentre el servo-motor en cada momento int anguloServo = ANGULO_CENTRO; // En este ejemplo, si el servo-motor está posicionado en el ángulo central, hay que conocer // si se está girando hacia la derecha o hacia la izquierda para poder establecer // el siguiente ángulo, que podrá ser hacia la derecja o hacia la izquierda según // el sentido de giro actual boolean haciaDerecha = true; void setup() { // Indicar con qué pin está asociado el servo-motor servo1.attach(pinServo1); // Posicionar inicialment el servo-motor en un ángulo concreto servo1.write(ANGULO_CENTRO); } void loop() { // Actuar de manera manera diferente según el ángulo en el que se encuentre // actualmente el servo-motor switch(anguloServo) { case ANGULO_DERECHA: // Si está hacia la derecha, girarlo hacia el ángulo del centro anguloServo = ANGULO_CENTRO; // El sentido de giro se establece hacia la izquierda haciaDerecha = false; break; case ANGULO_CENTRO: // Si el servo-motor está en la posición central, hay que averiguar si queremos // girarlo hacia la derecha o hacia la izquierda, en función del sentido en el que // actualmente está girando if(haciaDerecha) { anguloServo = ANGULO_DERECHA; } else { anguloServo = ANGULO_IZQUIERDA; } break; case ANGULO_IZQUIERDA: // Si está hacia la izqueirda, girarlo hacia el ángulo del centro anguloServo = ANGULO_CENTRO; // El sentido de giro se establece hacia la derecha haciaDerecha = true; break; } // Mover el servo-motor hasta el ángulo que se ha calculado servo1.write(anguloServo); // Esperar en esa posición un tiempo delay(500); }
Más información y ejemplos de programación
- Conociendo los servos (www.prometec.net)