Tutorial de Arduino y ServoTimer2 Deja un comentario

Comparte este Post

¡Hola, humanos! En el tutorial de hoy os explicaré cómo utilizar la librería ServoTimer2 con Arduino. Esta librería se utiliza para controlar servos mediante el Timer 2 de Arduino.

Vale… ¿pero por qué usar esta librería si ya tenemos la Servo.h, que además viene por defecto con todas las versiones del IDE de Arduino?
El problema está en que la librería Servo.h utiliza el Timer 1, y esto hace que entre en conflicto con otras librerías que empleen este mismo timer. Por ejemplo, si queremos controlar un servo por radio mediante VirtualWire nos veremos obligados a usar ServoTimer2 (u otra librería como SoftwareServo) en vez de la librería estándar.

Materiales y circuito

Para este ejemplo necesitamos:

  • Placa Arduino y cable USB compatible
  • Servo
  • Batería/Portapilas, con suficiente voltaje y amperaje para alimentar la placa y el servo
  • Cables de prototipado y una protoboard (si no queremos conectar el servo directamente)

Tenemos que montar este circuito:

¡Cuidado con el color de los cables del servo! Rojo = positivo, Negro = Negativo y Blanco/Amarillo = Señal


Descarga e instalación de la librería

La librería ServoTimer2.h no puede descargarse a través del IDE de Arduino, así que la tenemos que importar manualmente… ¡Ouch!

Nos vamos a su página de Github, y bajamos el ZIP con todos los archivos.

Pulsamos sobre el botón verde “Clone or download”

En la ventanita que se abre hacemos clic sobre “Download ZIP” y guardamos el archivo.

Ahora abrimos el IDE de Arduino, nos vamos a Sketch->Include Library->Add .ZIP Library y buscamos el ZIP que hemos descargado de Github.

Ahora ya podemos usar la nueva librería.


Código

Con este pequeño ejemplo veremos la forma de mover un servo con la librería ServoTimer2. Funciona prácticamente igual que la librería Servo.h normal, salvo un par de detalles.
El primero es que la librería sólo puede mover los servos de 0 a 160 grados, sin llegar nunca a los 180.
El segundo es que la función servo.write(), que se encarga de mover el servo, espera un valor entero entre 750 (posición mínima) y 2250 (posición máxima) en vez de uno entre 0 y 180.

/* Ejemplo basico de funcionamiento de la libreria
 * ServoTimer2.h
 * 
 * Escrito por Nano en beneficio de los seres humanos
 * www.robologs.net
 * 
 */

#include 

ServoTimer2 servo; //Crear el objeto servo

void setup() {

  //Adjuntar el servo al Pin Digital 2
  servo.attach(2);

}

void loop() {
  //Mover lentamente el servo de la posicion minima
  //a la posicion maxima
  for(int i = 750; i < 2250; i++) { servo.write(i); delay(1); } delay(1000); //Volver hacia atras for(int i = 2250; i > 750; i--)
  {
    servo.write(i);
    delay(1);
  }

  delay(1000);

}

Una vez tengamos el código compilado y cargado, veremos que el servo se mueve lentamente de 0 a 160 grados. Si no funciona tendremos que revisar el circuito y comprobar que hemos copiado bien todo el código.

¡Hasta la próxima! ?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Tenemos un cupón de descuento disponible para vos

Abrir chat
0

Tu carrito