Librería Arduino AsyncServo


Librería de Arduino que permite mover un servo de forma no bloqueante. De esta forma se tiene un servo que tiene un cierto comportamiento “asíncrono”.

La clase AsyncServo implementa un servo cuyos movimientos están temporizados, en lugar de ser bloqueantes. El objetivo de la librería es poder mover uno o varios servos en un proyecto, incluso a diferentes velocidades, mientras que no se impide la ejecución de otras tareas en el bucle de control principal.

Un objeto Asyncservo se instancia a través de su constructor, similar a la de un servo convencional. La posición puede indicarse mediante tres acciones,

  • Write, recibe el ángulo en decigrados.
  • WriteDegrees, recibe el ángulo en grados.
  • WriteMicroseconds, recibe el ángulo en microsegundos.

La opción por defecto Write se usa decigrados, porque proporciona una precisión superior a indicar los ángulos en grados con WriteDegree, pero sin añadir la complejidad de uso que supone indicar microsegundos con WriteMicroseconds.

El comportamiento “asíncrono” se consigue mediante las funciones Move y MoveDegress, que reciben la posición deseada para el servo y el tiempo del desplazamiento.

Para actualizar la posicion del servo es necesario llamar a la función Update, que debe ser llamada frecuentemente desde el bucle de control principal

Opcionalmente, los métodos Move y MoveDegress admiten una función de callback final, que resulta útil para formar movimientos encadenados y loops.

Adicionalmente se tienen de otras funciones para mejorar el uso de un servo en un proyecto real. Estas funciones son SetInput y SetOutput, que establecen el rango de entrada y salida para el servo, y ayudan a calibrar el servo. Esto es muy útil en el caso de robots articulados. Por ejemplo, es posible hacer que mapee los valores de -90º, 0º y 90º a 0.1º, 90.5º y 179.9.

Manual de uso

La clase AsyncServo puede instanciarse como un objeto a través de su constructor, y se actualiza con el método Update().

Ejemplos

La librería AsyncServo incluye los siguientes ejemplos para ilustrar su uso.

  • Sweep: Ejemplo que muestra como hacer un efecto balanceo con AsyncServo

  • TwoServos: Ejemplo que extiende el ejemplo Sweep a dos servos

Instalación

  • Descargar la última versión desde GitHub
  • Descomprimir el archivo
  • Copiar en tu carpeta de librerías (normalmente Mis Documentos\Arduino\libraries)
  • Relanzar el IDE de Arduino

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección
tutoriales de Arduino
Previous Torreta servo 2-DOF controlada por Arduino
Next Cómo solucionar que AutoCAD se bloquea al pulsar F3 o F8

¡Deja un comentario!...

avatar
1000
wpDiscuz