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);
}
}
Tags:
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ô.
"The default value for the timeout is 1000 (one second). " Como já tinha mencionado. Obrigado
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por