Fala galera!

Adquiri alguns servo motores (MG995 e MG996), e fiz um código para ver se eles estavam funcionando corretamente...

Usei o exemplo Knob do arduino e outro código q eu mesmo fiz somente para teste...

O código q eu fiz, consiste em ler um valor entre 0 e 180 informado pela serial e fazer com que o servo se mova para o determinado ângulo

Porém, quando eu informo o valor e pressiono ENTER na serial, existe um delay de mais ou menos 0,5 a 1s ate que o servo se mova.... E isso não era para acontecer, o correto seria assim que eu digitar o valor na serial e pressionar ENTER o servo deveria se mover imediatamente

Segue abaixo o código para análise:

#include <Servo.h>

Servo myservo;
int ref;

void setup()
{
myservo.attach(9); 
Serial.begin(9600);
myservo.write(0);
}

void loop()
{

while(Serial.available()){

ref = Serial.parseInt();
myservo.write(ref);
delay(15);

}

}

Exibições: 519

Responder esta

Respostas a este tópico

Em João, fiz o teste aqui e deu o mesmo problema: Servo MG995 15KG.

Tem o delay.

Manoel, refiz os testes usando uma variável do tipo char e não houve delay....

Porém, são valores da tabela ascii que estão sendo imprimidos no valor de posiçao do servo...

Terei q pensar em um mudo de manipular essa variável do tipo char ( tabela ascii ) para imprimir valores entre 0 e 180.

Veja se é possível diminuir o timeout de recepção da uart.

Problema resolvido!!!

O problema era o uso da função parseInt();

O problema foi resolvido acrescentando a função Serial.setTimeout(30);

Obrigado..

Show .. isso vai me ajudar bastante, vou precisar usar 15 servos no meu robô.

Link da soluçao Manoel :

http://forum.arduino.cc/index.php?topic=99336.0

Me ajudou bastante!

"The default value for the timeout is 1000 (one second).  " Como já tinha mencionado. Obrigado

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço