This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Funcionamiento incorrecto servo
#1
Buenas!
Sigo haciendo pruebas con mi arduino y acoplándome a su C++ modificado.
La siguiente prueba lee un valor de rotación desde el monitor serie de arduino y lo envía por PWM a un servo para que lo convierta en un giro.
Algo debe de estar mal, porque no gira como debe, sino que oscila, o bien ejecuta un movimiento "convulso" y vuelve a su posición inicial. ¿Podéis echarle un vistazo?  Imagino que la cosa viene por el formato de datos de la información desde el monitor serie.
Gracias de antemano.



#include <Servo.h>
#include <SoftwareSerial.h>

Servo servo10;  // Objeto servo para entrada_salida 10

int valor = 0;    // inicializa variable para almacenar el valor instantáneo de giro
int giro = 0;    // inicializa variable para almacenar el angulo de rotación

void setup()
{
  Serial.begin(9600);
  servo10.attach(10);  // El objeto servo está asociado a la salida 8
}

void loop()
{
  int giro =  Serial.read(); //  Lee el valor del ángulo de rotación
  for (valor = 0; valor <= giro; valor += 1);
  {
    servo10.write(valor);    // Ejecuta la rotación con intervalos de 20 ms
    delay (20);
  }
}

Bien, he encontrado información sobre el monitor serie y he modificado el programa.
Con ello si que ejecuta el giro que se le pide, pero por ejemplo, se hacemos girar 90º, luego no puedo decirle que vuelva a un valor inferior. Llega a 180º y ahí se apalanca hasta que reinicio el arduino. ¿¿¿????

#include <Servo.h>
#include <SoftwareSerial.h>

Servo servo10; // Objeto servo para entrada_salida 10

int valor=0; // inicializa variable para almacenar el valor instantáneo de giro
int giro = 0; // inicializa variable para almacenar el angulo de rotación

void setup()
{
Serial.begin(9600);
servo10.attach(10); // El objeto servo está asociado a la salida 10
}

void loop()
{
giro = Serial.parseFloat(); // Lee el valor del ángulo de rotación en valor decimal
for (valor; valor <= giro; valor += 1); // mantiene el valor último para que se el servo no vuelva a origen
{
servo10.write(valor); // Ejecuta la rotación con intervalos de 20 ms
delay (10);
}
}
  Responder
#2
Me autocorrijo aquí, por si alguien se topa con el mismo problema.

Al introducir el valor del ángulo de giro por el monitor serie, no solamente le enviamos sl valor, sino caracteres especiales, por ello hace no funciona correctamente. Hay que truncar la cadena entrante eliminando los caracteres de fin de línea y entregar ese valor al servo.

#include <Servo.h>
#include <SoftwareSerial.h>

Servo servo10; // Objeto servo para entrada_salida 10

void setup()
{
Serial.begin(9600);
servo10.attach(10); // El objeto servo está asociado a la salida 10
int giro=0; // Inicializa la variable
servo10.write(giro); // Pone a 0 el servo en reposo
}

void loop()
{
if (Serial.available()>0) {
String mensaje = Serial.readString(); //Almacena el dato recibido
mensaje.trim(); // Recorta el mensaje recibido
int giro = mensaje.toInt(); // Lee el valor del ángulo de rotación como INT
Serial.println(giro); // Imprime en el monitor el valor de la rotación
servo10.write(giro); // Ejecuta la rotación
}
}
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  Arduino nano y servo de rotación continua Bear 2 299 04-03-2022, 08:07 PM
Último mensaje: Bear
  CONSULTA Re: Arduino Mega, 1 servo ,1 nema, 3 motor DC carlos hop 8 2,650 26-09-2018, 01:30 PM
Último mensaje: Shellmer
  CONSULTA ROBOT DOS MOTORES CON SERVO PARA DIRECCION Miguelmetro 1 1,497 23-04-2018, 06:30 PM
Último mensaje: Iván
  problemas con libreria servo homer32 9 5,462 17-03-2017, 12:45 PM
Último mensaje: homer32
  control servo sin libreria "servo.h" homer32 11 10,694 08-12-2016, 01:25 PM
Último mensaje: homer32