Buenas.
Estoy montando algo pequeño con Arduino Mega 2560 y después de solventar algunos problemas, aun me quedan un par de ellos, de los cuales uno de ellos es el que pongo como Asunto: Control de velocidad en los Servos. Cuando giran los dos servos, de 360º cada uno, me he dado cuenta de que uno gira un poco más rápido que el otro, haciendo que al andar gire en círculos grandes.
Buscando por Google me he fijado en que no hay muchas, por no decir que ninguna en concreto, soluciones al respecto, pero si he leído que se puede controlar la velocidad, solo que no se como. Necesito que giren a la misma velocidad ya que pretendo que en ocasiones hagan recorridos rectos y es imposible tal y como están ahora.
¿Alguien sabe como poder hacerlo? Como ya he dicho la placa arduino usada es la Mega 2560, los motores son los GWS S35/STD de 360º.
El código usado es este:
#include <Servo.h>
//Declaramos dos objetos Servo, uno por cada motor
Servo servo1;
Servo servo2;
//pingPin = 7 para el PING)))
const int pingPin = 7;
long duration, cm;
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
servo1.attach(3);
servo2.attach(5);
}
void loop()
{
//Este código del ejemplo PING del soft de Arduino 0022
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
cm = microsecondsToCentimeters(duration);
//Esta función hace girar los dos servos
servoDos(servo1, servo2);
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(150);
}
void servoDos(Servo ser1, Servo ser2)
{
if(cm >= 20)
{
ser1.write(0);
ser2.write(180);
}
if(cm <= 20)
{
ser1.write(180);
ser2.write(0);
}
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
Alguien ya me ha dicho que si los baudios... que si no se que... no entiendo mucho, pero me han recomendado que los baudios no los toque mucho si no se porque puedo quemar tanto la placa como los puertos USB (como le ha pasado a un amigo), y aunque no sepa mucho, por lógica creo que si los motores son iguales y trabajan con el mismo código no creo que cambiando los baudios, por ejemplo, vayan a solucionar nada.
Pero bueno, ya me diréis si me equivoco, lo que puedo hacer, lo que no debo hacer...
Muchas gracias por adelantado.