Paso 9: Control de servos
Ejemplo 5 - controlando un servo con entrada analógica
Estos dos ejemplos muestran lo fácil que es controlar servos utilizando una entrada analógica. Usted puede utilizar cualquier dispositivo de entrada analógica que desee-usaré el potenciómetro 10 k ohmios para el esquema de ejemplo. Como puede girar el bote (y cambiar su valor) el servo se mueve proporcionalmente.
El segundo ejemplo de código simplemente extiende el primer ejemplo para controlar seis servos de seis entradas. Este tipo de control viene en realmente práctico si quieres controlar varios servos con curva sensores atados a un guante. Esto debería funcionar muy bien para el control de una máscara de animatronic.
/*
* Ejemplo 5
* Servo Control
* Este ejemplo utiliza un servos y analógico para mover el servo según el valor de entrada del sensor de entrada
* Honus 2010
*/
#include "Servo.h" / / incluye la librería servo
Servo1 servo; crea una instancia del objeto servo para controlar un servo
int analogPin = 0; el pin analógico que el sensor está en
int analogValue = 0; el valor devuelto por el sensor análogo
int servoPin = 4; Pin de control de motor servo
void setup() {}
servo1.Attach(servoPin); se fija el servo en el pin 9 al objeto servo
}
void loop()
{
analogValue = analogRead(analogPin); Lee la entrada analógica (valor entre 0 y 1023)
analogValue = mapa (analogValue, 0, 1023, 0, 179); asignar el valor analógico (0 - 1023) en el ángulo del servo (0 - 179)
servo1.Write(analogValue); Escriba el nuevo valor analógico asignado para fijar la posición del servo
Delay(15); espera a que el servo llegar
}
Ejemplo 5a - 6 control de servos con múltiples entradas
/*
* Ejemplo 5a
* Servo Control6
* Este ejemplo utiliza 6 entradas analógicas y servos para mover los servos según los valores de entrada de sensor
* Honus 2010
*/
#include / / incluye la librería servo
Servo servoMotor1; crea una instancia del objeto servo para controlar un servo
Servo servoMotor2;
Servo servoMotor3;
Servo servoMotor4;
Servo servoMotor5;
Servo servoMotor6;
int analogPin1 = 0; el pin analógico que el sensor está en
int analogPin2 = 1;
int analogPin3 = 2;
int analogPin4 = 3;
int analogPin5 = 4;
int analogPin6 = 5;
int analogValue1 = 0; el valor devuelto por el sensor análogo
int analogValue2 = 0;
int analogValue3 = 0;
int analogValue4 = 0;
int analogValue5 = 0;
int analogValue6 = 0;
int servoPin1 = 4; Pin de control de motor servo
int servoPin2 = 5;
int servoPin3 = 6;
int servoPin4 = 7;
int servoPin5 = 8;
int servoPin6 = 9;
void setup() {}
servoMotor1.attach(servoPin1); se fija el servo en el pin 4 al objeto servo
servoMotor2.attach(servoPin2); se fija el servo en el pin 5 al objeto servo
servoMotor3.attach(servoPin3); se fija el servo en el pin 6 al objeto servo
servoMotor4.attach(servoPin4); se fija el servo en el pin 7 al objeto servo
servoMotor5.attach(servoPin5); se fija el servo en el pin 8 al objeto servo
servoMotor6.attach(servoPin6); se fija el servo en el pin 9 al objeto servo
}
void loop()
{
analogValue1 = analogRead(analogPin1); Lee la entrada analógica (valor entre 0 y 1023)
analogValue1 = mapa (analogValue1, 0, 1023, 0, 179); asignar el valor analógico (0 - 1023) en el ángulo del servo (0 - 179)
servoMotor1.write(analogValue1); Escriba el nuevo valor analógico asignado para fijar la posición del servo
analogValue2 = analogRead(analogPin2);
analogValue2 = mapa (analogValue2, 0, 1023, 0, 179);
servoMotor2.write(analogValue2);
analogValue3 = analogRead(analogPin3);
analogValue3 = mapa (analogValue3, 0, 1023, 0, 179);
servoMotor3.write(analogValue3);
analogValue4 = analogRead(analogPin4);
analogValue4 = mapa (analogValue4, 0, 1023, 0, 179);
servoMotor4.write(analogValue4);
analogValue5 = analogRead(analogPin5);
analogValue5 = mapa (analogValue5, 0, 1023, 0, 179);
servoMotor5.write(analogValue5);
analogValue6 = analogRead(analogPin6);
analogValue6 = mapa (analogValue6, 0, 1023, 0, 179);
servoMotor6.write(analogValue6);
Delay(15); espera a que el servo llegar
}