En el bosquejo, hay código de inicialización para incluir la librería servo, declarar variables, definir qué pernos están en uso etc. y funciones que se llaman en servoCheck() para ejecutar el código que los servos se reposiciona.
La siguiente línea #include es la razonable. Trae en el código de servo inteligente:
#include / / incluye arduino estándar servo clase (la biblioteca)
La siguiente línea define un retardo (5 milisegundos) para que el servo no se reajusta a menudo. Sin demora, los servos son ser reajustados constantemente y esto puede conducir a agotamiento. Si la demora es demasiado larga, aunque, los servos se convierten en desigual y lento para responder.
int delay_val = 5; asigna el desfase del incremento del servo (retraso entre valores) para ambos servos
El servocontrol se basa en las señales de entrada analógicas en forma de voltajes de entrada variable, que el Arduino convierte a valores digitales (en otras palabras números!) y luego en el código siguiente se utiliza para manipular estos números y crear salidas digitales para posicionar los servos cuando las entradas son muy variadas. El código en la librería servo.h hace todo el trabajo sucio. El código que debes escribir realmente envía valores de datos muy simple a las funciones de la biblioteca para que todo suceda.
Los voltajes de entrada fueron creados mediante el uso de simples resistencias variables (potenciómetros), uno para cada servo. Potenciómetros (potes) son fáciles de reciclar viejos kit eléctricos, como radios antiguas. El valor de la resistencia no es especialmente importante. Típicamente son 0-10 k ohmios. Para cada maceta, los polos de la dos fuente están conectados a tierra (tierra) y 5V respectivamente y la señal de salida está conectado a un pin analógico de Arduino.
Para el diagrama del circuito Consulte el paso 10. Es muy sencillo.
Este bit declara el primer servo...
SERVO 1
Servo myservo; crear objeto servo para controlar un servo
const int potPin1 = 0; declara que pin analógico se utiliza para conectar la salida de voltaje variable analógica del potenciómetro 1 (servo control 1)
int valPot1; variable para leer el valor del pin analógico de servo 1
SERVO DE FINAL 1
Este bit declara el segundo servo...
SERVO 2
Servo myservo2; crear el segundo objeto servo para controlar un servo de segunda
const int potPin2 = 1; declara que pin analógico se utiliza para conectar la salida de voltaje variable analógica del potenciómetro 2 (servo controles 2)
int valPot2; variable para leer el valor del pin analógico de servo 2
FINAL SERVO 2
SERVOS
void setup() {}
Una vez que han sido declarados los servos (myservo, myservo2), se definen las conexiones de pines de Arduino:
Conecte los servos
myservo.Attach(5); se fija el servo en el pin 5 al objeto servo
myservo2.Attach(9); segundo servo se conecta al pin 9 al segundo objeto servo
}
Una vez que se han definido los servos, el 'servoCheck()' función se definió . Esto se llama en la función estándar de Arduino 'Bucle ()' para varias ocasiones comprobar entradas y convertir estas salidas que controlan los servos y traducir esto para eyeball movimiento.
void servoCheck() {}
controles servo
Servo 1---
valPot1 = analogRead(potPin1); Lee el valor del potenciómetro (valor entre 0 y 1023)
La variable valPot1 está tomando la señal de entrada de uno de los potentiomaters. Para esto se utiliza el comando de analogRead(). Dice el Arduino para convertir el voltaje de entrada analógico crudo (dentro de la gama 0 a 5 voltios) en un valor digital entre 0 y 1023.
El código de servo necesita valores de entrada entre 0 y 179. Utilizará estos valores para establecer su posición. una entrada de 0 posiciones el eje del servo en grados-90 y 179 fijar a 90 grados. Los rangos de número (0 - 1023 y 0-179) que deba ampliarse. Esto se hace usando la función de () mapa de Arduino. Toma los valores digitales (0 a 1023) entregados por la función analogRead() y escalas de ellos a un número entre 0 y un 179.
valPot1 = mapa (valPot1, 50, 1000, 0, 179); la escala a utilizar con el servo (valor entre 0 y 180)
myservo.Write(valPot1); ajusta la posición del servo según el valor de escala
Delay(delay_val);
---final del servo 1
Esto es lo mismo para el segundo servo
// servo 2 ------------------------
valPot2 = analogRead(potPin2); Lee el valor del potenciómetro (valor entre 0 y 1023)
digitalWrite (ledPinJoystick, HIGH);
valPot2 = mapa (valPot2, 50, 1000, 0, 179); la escala a utilizar con el servo (valor entre 0 y 180)
myservo2.Write(valPot2); ajusta la posición del servo según el valor de escala
Delay(delay_val);
---final del servo 2
acabar con controles servo * /
}
Y eso es todo lo que es