Biblioteca Servo

Esta biblioteca permite a una placa Arduino controlar servomotores RC (hobby). Los Servos integran engranajes y un eje que puede ser controlado con precisión. Los servos estándar permiten que el eje sea colocado en distintos ángulos, por lo general entre 0 y 180 grados. Los servos de rotación continua permiten la rotación del eje para ajustarse a diferentes velocidades.

La biblioteca Servo soporta hasta 12 motores en la mayoría de las placas Arduino y 48 en el Arduino Mega. En las placas que no sean las Mega, el uso de la biblioteca desactiva analogWrite) funcionalidad ((PWM) en los pines 9 y 10, exista o no un servo en los pines. En los Mega, hasta 12 servos pueden ser utilizados sin interferir con la funcionalidad PWM; el uso de 12 a 23 motores desactivará PWM en los pines 11 y 12.

Circuito

Los servomotores tienen tres cables: masa, tierra, y señal. El cable de alimentación es típicamente de color rojo, y debe ser conectado al pin 5 V de la placa Arduino. El cable de tierra es por lo general de color negro o marrón y debe estar conectado a un conector de tierra de la placa Arduino. El pin de señal es normalmente de color amarillo, naranja o blanco y debe ser conectado a un pin digital de la placa Arduino. Tenga en cuenta que los servos condumen una potencia considerable, por lo que si tiene que conducir más de uno o dos, es probable que necesite una alimentación independiente (es decir, no el pin de + 5 V de la placa Arduino). Asegúrese de conectar las masas de Arduino y  de la fuente de alimentación externa juntas.

Funciones

attach()

Descripción:
Conecte la variable Servo a un pin. Tenga en cuenta que en Arduino 0016 y anteriores, la biblioteca de servo sólo es compatible con los servos en sólo dos pines: 9 y 10.

Sintaxis:
servo.attach(pin) 
servo.attach(pin, min, max)

Parámetros:
servo: una variable de tipo Servo
pin: el número del pin que el servo está conectado
min (opcional): el ancho de pulso, en microsegundos, correspondiente al ángulo mínimo (0 grados) del servo (por defecto 544)
max (opcional): el ancho de pulso, en microsegundos, correspondiente al ángulo máximo (180 grados) del servo (por defecto 2400)

Ejemplo:
#include <Servo.h>

 Servo myservo;

 void setup()
 {
   myservo.attach(9);
 }

 void loop() {}
  ________________________________________________________________________________

write()

Descripción:
Escribe un valor en el servo, controlando el eje en consecuencia. En un servo estándar, esto hará que el ángulo del eje (en grados), mueva el eje para orientarse. En un servo de rotación continua, esto seleccionará la velocidad del servo (siendo 0 a toda velocidad en una dirección, siendo 180 la velocidad máxima en la otra, y un valor de cercano a 90 sin movimiento).

Sintaxis:
servo.write(angle)

Parámetros:
servo: una variable de tipo Servo
angle: el valor a escribir en el servo, de 0 a 180

Ejemplo:
#include <Servo.h>

 Servo myservo;

 void setup()
 {
   myservo.attach(9);
   myservo.write(90);  // ajusta el servo al punto medio
 }

 void loop() {}
_________________________________________________________________________________

writeMicroseconds()()

Descripción:
Escribe un valor en microsegundos (uS) para el servo, controlando el eje en consecuencia. En un servo estándar, esto posiciinará el ángulo del eje. En servos estándar un parámetro  de un valor de 1000 lo posicina completamente hacia la izquierda, 2000 los posiciona totalmente hacia la derecha, y 1500 lo posiciona en el medio.

Tenga en cuenta que algunos fabricantes no siguen esta norma estrictamente por lo que los servos a menudo responden a valores entre 700 y 2300. No dude en para aumentar estos criterios de valoración hasta que el servo ya no sigue aumentando su rango. Tenga en cuenta sin embargo, que intentar llevar un servo más allá de sus puntos finales (a menudo indicado por un sonido gutural) es un estado de alto consumo de corriente, y debe ser evitado.

Los servos de rotación continua responderán a la función writeMicrosecond de una manera análoga a la función de escritura.

Sintaxis:
servo.writeMicroseconds(uS)

Parámetros:
servo: una variable de tipo Servo
uS: el valor del parámetro en microsegundos (int)

Ejemplo:
#include <Servo.h>

 Servo myservo;

 void setup()
 {
   myservo.attach(9);
   myservo.writeMicroseconds(1500);  // ajusta el servo a su punto medio
 }

 void loop() {}
_________________________________________________________________________________

read()

Descripción:
Lee el ángulo actual del servo (el valor pasado a la última llamada a write ()).

Sintaxis:
servo.read()

Parámetros:
servo: una variable de tipo Servo

Retornos:
El ángulo del servo, de 0 a 180 grados.
________________________________________________________________________

attached()()

Descripción:
Comprueba si la variable Servo está conectada a un pin.

Sintaxis:
servo.attached()

Parámetros:
servo: una variable de tipo Servo

Retornos:
true si el servo está conectado al pin; false en caso contrario.
________________________________________________________________________

detach()

Descripción:
Desconecta la variable Servo de su pin. Si se desconectan todas las variables Servo, a continuación, las patillas 9 y 10 se pueden utilizar para la salida de PWM con analogWrite ().

Sintaxis:
servo.detach()

Parámetros:
servo: una variable de tipo Servo
________________________________________________________________________

Ejemplos

Knob: controlar el eje de un motor servo girando un potenciómetro.
Sweep : barre el eje de un motor servo de ida y vuelta.

No hay comentarios:

Publicar un comentario