Paso 17:
Código
#include
Base del servo;
Servo Joint1;
Servo Joint2;
Grabber del servo;
const int analogInPin1 = A1; Clavija de entrada analógica que el potenciómetro está conectado a
const int analogInPin2 = A2; Clavija de entrada analógica que el potenciómetro está conectado a
const int analogInPin3 = A3; Clavija de entrada analógica que el potenciómetro está conectado a
const int analogInPin4 = A4; Clavija de entrada analógica que el potenciómetro está conectado a
int sensorValue1 = 0; valor leído de la olla
int sensorValue2 = 0; valor leído de la olla
int sensorValue3 = 0; valor leído de la olla
int sensorValue4 = 0; valor leído de la olla
void setup() {}
inicializar comunicaciones serie a 9600 bps:
Serial.Begin(9600);
Base.Attach(3);
Joint1.Attach(4);
Joint2.Attach(5);
Grabber.Attach(6);
}
void loop() {}
Lectura analógica de valor:
sensorValue1 = analogRead(analogInPin1);
sensorValue2 = analogRead(analogInPin2);
sensorValue3 = analogRead(analogInPin3);
sensorValue4 = analogRead(analogInPin4);
imprimir los resultados en el monitor serial:
Serial.Print ("\nBase conjunta:");
Serial.Print(sensorValue1);
Serial.Print ("conjunto de fondo =");
Serial.Print(sensorValue2);
Serial.Print ("junta superior =");
Serial.Print(sensorValue3);
Serial.Print ("Grabber =");
Serial.Print(sensorValue4);
mapa de los resultados al parámetro de control de servo
Base.Write (mapa (sensorValue1, 500, 200, 150, 45));
Joint1.Write (mapa (sensorValue2, 680, 130, 300, 50));
Joint2.Write (mapa (sensorValue3, 400, 800, 140, 30));
Grabber.Write (mapa (sensorValue4, 80, 180, 250, 320));
}
La biblioteca de control de servo Servo.h está incluida en nuestro código. Como nuestro código implica sólo funciones simples, no vamos demasiado profundo en la base de la lengua.
Mecanismo de asignación de movimiento
Su mecanismo de asignación de movimiento implica 3 pasos:
1. Lea el voltaje en la resistencia de la clavija de entrada analógica. Los rangos de lectura de 0-1023, que indica tensión 0-5v proporcional.
Código:
sensorValue1 = analogRead(analogInPin1);
sensorValue2 = analogRead(analogInPin2);
sensorValue3 = analogRead(analogInPin3);
sensorValue4 = analogRead(analogInPin4);
2. basado en la orientación inicial del servo, asignar el valor de entrada para que coincida con la posición deseada de servo correspondiente.
3. Envíe el parámetro de posición con el conector de salida digital para controlar el movimiento del servo.
Código:
Base.Write (mapa (sensorValue1, 500, 200, 150, 45));
Joint1.Write (mapa (sensorValue2, 680, 130, 300, 50));
Joint2.Write (mapa (sensorValue3, 400, 800, 140, 30));
Grabber.Write (mapa (sensorValue4, 80, 180, 250, 320));
La función map() en el código anterior se utiliza para asignar la lectura para el parámetro de ángulo del servo. La función XXX.write() se utiliza para enviar los valores asignados al servo.
Calibración
Como es la relación de tensión de la posición puede ser más o menos considerado como lineal, una manera fácil de establecer el parámetro de asignación es acabar con las lecturas de entrada analógicas en 2 posiciones (aquí recomendamos punto medio o punto final) y mapa para el parámetro de posición del servo.
Por consiguiente, nuestro primer paso es conectar el brazo de control para el microcontrolador a través de un cable USB, abrir el IDE de Arduino programa, copie el código anterior en la ventana y cargar en el chip. Asegúrese de que el tipo de chip derecho y se selecciona puerto COM.
Si todo va bien, el voltaje de cada resistencia se puede leer desde el monitor serie. Asegúrese de que el monitor serial es que a la velocidad de la banda derecha (9600 en nuestro caso).
A continuación, mueva cada uno de la Junta a algunos ciertas posiciones y leer
los valores de entrada analógicos de la serie monitorean y blanco abajo. Luego ajuste el brazo del servo a estas posiciones y tomar parámetros de posición. Por último, asignar los valores de entrada para las posiciones de los servos y enviar estos valores a través de pernos de la salida digital.
Jugando a los parámetros de asignación le dará un mejor resultado del movimiento de sincronización.
Para mejorar su exactitud, incluso podemos añadir más posiciones como referencia y les mapa por trozos.