Olá pessoal.

Preciso de ajuda por favor.

Não sei como enviar uma string de caracteres pela USB do arduino, utilizando por exemplo, o terminal do arduino, onde eu envie  um determinado valor por exemplo: 406,78 , e o motor de passo responda girando o mesmo número de passos.

Observação:  O valor pode ser positivo ou negativo!!!   Onde o motor irá girar para a direita se for positivo e para esquerda se for negativo.

Estou usando a placa Arduino MEGA 2560 e uma placa driver (tipo easydriver), onde envio os comandos de direção, habilitação para o motor.

O motor está acoplado em uma caixa de redução com fator de 40:1.

Preciso fazer o seguinte: Enviar um valor em graus de arco (por exemplo, 99,876 graus), e o motor deve girar até o eixo da caixa coincidir no valor em graus que digitei no computador.

Isso será usado para rotacionar com extrema precisão um telescópio.

Comecei um pequeno código, mas vejo que valores em float, não aparecem no terminal.

É apenas o começo do projeto, desculpem pela simplicidade do código. Eu estou usando dois pequenos botões para fazer o motor girar. Tudo funciona, mas preciso avançar para o formato que descrevi no início do projeto.

Segue o início do código:

// Este programa faz o motor girar a quantidade de passos definida pelo usuário
//para a direita e volta a zero para esquerda conforme informação no pino 2 buttonState

int stp = 13; //conectar no pin 13 para passo
int dir = 12; // conectar no pin 12 para direção
float a = 0; // contagem geral
int hab = 11; // Habilita motor
float passos; // Numero de passos que vc deseja
int buttonState = 0; // Estado do botão
int buttonState2 = 0; // Estado do botão
const int buttonPin1 = 2; //Referencia de tensão do botao (+ vcc com res 10k em série)
const int buttonPin2 = 10;
void setup()
{
pinMode(stp, OUTPUT);
pinMode(dir, OUTPUT);
pinMode(hab, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
Serial.begin(9600);
}


void loop()
{

buttonState = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
passos = 400.98;

if (buttonState == HIGH && buttonState2 == HIGH && a<passos) {
a++;
digitalWrite(dir, HIGH);

digitalWrite(hab, LOW);

digitalWrite(stp, HIGH);
delay(1);
digitalWrite(stp, LOW);
delay(1);
Serial.println(a,3);
}
if (buttonState == LOW && buttonState2 == HIGH && a>0) {
a--;
digitalWrite(dir, LOW);

digitalWrite(hab, LOW);

digitalWrite(stp, HIGH);
delay(1);
digitalWrite(stp, LOW);
delay(1);
Serial.println(a,3);
}

else { digitalWrite(hab, HIGH);}
}

Por favor...alguém me ajude.

Grato.

Exibições: 164

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço