Imprimir

Ejemplo1

Se va a mover el servo-motor desde el ángulo 0 al ángulo 180, y viceversa, de manera indefinida

DSC 0088 320

// 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 ...

DSC 0089

// 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