Controle para 3 motores de passo usando shield cnc v3 e driver DRV8825

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);*

  • }*
    }

Minhas sugestões:
Usar Serial.readString()

Descobrir como selecionar cada carácter.
Converter os números para int e usar eles direto nas funções ao invés de fazer case.
Pesquise mais e depois atualize o post com novas dúvidas e seu progresso.