Librería Arduino AsyncServo Deja un comentario

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.

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

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 DocumentosArduinolibraries)
  • 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

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.

Enviar Whatsapp
Hola 👋
¿En qué podemos ayudarte?