Boa noite.
Estou com dificuldades em avançar no desenvolvimento de um código para controlar 3 motores de passo através do shield v3.
Gostaria de enviar pela serial um comando para o Arduíno ele virasse um motor conforme a orientação.
"Motor escolhido, quantidade de passos, velocidade e direção."
Ate agora, com o código abaixo, consigo alternar entre os motores e mudar de direção, porem ainda não consigo mudar a velocidade nem restringir a quantidade de passos. Mas também envio um carácter por vez mas gostaria de enviar um comando único, exemplo:
"A300D500" , que significa "MOTOR A/300PASSOS/VIRAR PARA DIREITA/VELOCIDADE500"
Desde já, agradeço.
// Controle para 3 motores de passo usando shield cnc v3 e driver DRV8825
int stepPin = 2;
int dirPin = 5;
const int enaPin = 8;
const int vel = 250;
int passos = 800;
char motor = "";
void setup() {
-
Serial.begin(9600);*
-
// setando pinos como saidas*
-
pinMode(stepPin, OUTPUT);*
-
pinMode(dirPin, OUTPUT);*
-
pinMode(enaPin, OUTPUT);*
}
void loop() { -
if (Serial.available() > 0) { //lendo a serial*
-
motor = Serial.read();*
-
}*
-
switch (motor) {*
-
case 'a': //pinos de saida para controle do motor a*
-
stepPin = 2; //passos*
-
dirPin = 5; //direcao*
-
break;*
-
case 'b': //pinos de saida para controle do motor b*
-
stepPin = 3; //passos*
-
dirPin = 6; //direcao*
-
break;*
-
case 'c': //pinos de saida para controle do motor c*
-
stepPin = 4; //passos*
-
dirPin = 7; //direcao*
-
break;*
-
case 'd':*
-
digitalWrite(dirPin, HIGH);//Vira motor para a direita*
-
break;*
-
case 'e':*
-
digitalWrite(dirPin, LOW);//Vira motor para a esquerda*
-
break;*
-
}*
-
digitalWrite(enaPin, LOW);//habilitando driver*
-
// para uma rotacao usar 800 passos ....driver funcinando em 1/4 de passo*
-
//looping de funcionamento do motor*
-
for (int x = 0; x < passos; x++) {*
-
digitalWrite(enaPin, LOW);*
-
digitalWrite(stepPin, HIGH);*
-
delayMicroseconds(vel);*
-
digitalWrite(stepPin, LOW);*
-
delayMicroseconds(vel);*
-
}*
}