lunes, 27 de junio de 2016

Arduino: Como Controlar Un Servomotor



Ejemplo 1: Como empezar a controlar un Servomotor


/*
----------------------------------
Tutorial Numero 3 Conectemos Ideas
----------------------------------

Este Es Un Ejemplo Básico Para Empezar A Controlar Nuestro Servomotor

*/

#include <Servo.h> // Librería de Arduino para usar el servo-motor

Servo Servo1;         //Crear un nuevo Objeto tipo "Servo" llamado Servo1

void setup() {

//Servo1.attach(9);  // En este pin tenemos conectado nuestro servo-motor
                               // Valor por defecto del Arduino de mínimo 544us y maximo 2400us
               
               

Servo1.attach(9,900,2450);
                              // Podemos escoger el rango mínimo y máximo de nuestro ancho de pulso
                             // Verificamos el datasheet de nuestro servo
                             // Tengo un servo-motor Hitec HS-311 con mínimo es 900us y maximo 2100us
                             //  valor mínimo es de 900us para 0grados y valor maximo 2450us para 180grados
                             // Estos valores son para mi servo
                             //Puedes ir modificando hasta llegar al valor deseado
}

void loop() {

/*
 -------------------------------------------------------------------
 Simplemente escribimos el valor del Angulo deseado en Servo1write():
 -------------------------------------------------------------------
 */

/*

// Estos valores de los angulos pueden presentar desfaces dependiendo de tu servo-motor.
// Te recomiendo que pruebes hasta llegar al angulo deseado

Servo1.write(0);
delay(2000);

Servo1.write(90);
delay(2000);

Servo1.write(0);
delay(2000);

Servo1.write(180);
delay(2000);

*/




/*
  ----------------------------------------------------------------------------------
  Tambien podemos escribir el valor en micro-segundos con Servo1.writeMicroseconds();
  ----------------------------------------------------------------------------------

*/

// Personalmente me gusta usar mas  .writeMicroseconds();

Servo1.writeMicroseconds(900); // Con mi servo se ubica en 0 grados
delay(2000);
Servo1.writeMicroseconds(1650); // Con mi servo se ubica en 90 grados
delay(2000);
Servo1.writeMicroseconds(2450); // Con mi servo se ubica en 180 grados
delay(2000);
Servo1.writeMicroseconds(1650); // Con mi servo se ubica en 90 grados
delay(2000);


}


Ejemplo 2: Este es el Ejemplo Knob que trae incluido el Software Arduino.




/*
----------------------------------
Tutorial Numero 3 Conectemos Ideas
----------------------------------

Este es el Ejemplo Knob que trae incluido el Software Arduino.

*/

#include <Servo.h>   // Librería de Arduino para usar el servo-motor

  Servo myservo;     // Crear un nuevo Objeto tipo "Servo" llamado myservo

int potpin = 0;        // Pin Análogo en donde vamos a conectar nuestro potenciómetro, en este caso pin                                // A0
int val;                   // Variable para leer el valor del pin analógico

void setup()
{
  myservo.attach(9); // Pin donde tenemos conectado nuestro servo-motor
}

void loop() 
  val = analogRead(potpin);            // Leemos el valor del potenciómetro y lo guardamos en "val"                                                                 //(Este valor esta entre 0 y 1023) 

  val = map(val, 0, 1023, 0, 180);     //Convertimos el valor al angulo deseado, este angulo varia de 0 a                                                          //180. 
                                       
  myservo.write(val);                       // Establece la posición del servo de acuerdo con el valor 

  delay(15);           


Ejemplo 3:  Como accionar un servomotor con un pulsador.
               

/*
----------------------------------
Tutorial Numero 3 Conectemos Ideas
----------------------------------

En este ejemplo accionamos nuestro servo oprimiendo el pulsador.

*/

#include <Servo.h> 

Servo myservo;

int Pulsador = 2;       // En este Pin esta conectada la señal de entrada, esta la recibimos del Pulsador
int val;                // Variable para asignar el valor del angulo
int EstadoActual = 0;   // Variable para leer el valor de Pulsador.

void setup() 
  myservo.attach(9);         // Pin donde tenemos conectado nuestro servo-motor
  pinMode(Pulsador, INPUT);  // Pulsador = Entrada     

void loop() 
  EstadoActual = digitalRead(Pulsador); //Leemos el valor del pulsador y lo guardamos en EstadoActual.
  if (EstadoActual == HIGH) {           //Si el Pulsador es presionado  
    val = 180;                          //El servo se ubica en la pocision deseada, en este caso 180 grados
  } 
  else {                                // Si el Pulsador NO es presionado, permanece en 0
    val = 0;                            
  }
  myservo.write(val);                   // Escribe el valor de los grados para nuestro Servo-motor
  delay(15);
}

Comprar Arduino: CLICK


Comprar Servomotor: CLICK

Comprar Servomotor Mini: CLICK