Motor de passo com chave de velocidade e sentido

Estou com um projeto para controlar o motor de passo nema 24 -30kgd com driver dm542.
Com chaves de sentido e velocidade.
O motor só deve funcionar se for ligadas as chaves de velocidade e sentido em conjunto.
No projeto terá 2 chaves uma para cada sentido e 2 chaves com velocidades pré definidas.
Estou tentado usar o nodemcu mas tenho tbm arduino mega.
Esse é o codigo que estou tendo usar mas o motor não segue a lógica, liga somente quando seleciono um sentido sem selecionar a velocidade.

#include <Stepper.h>

// Definindo o número de passos por revolução
const int stepsPerRevolution = 200;

// Inicializando a biblioteca de Passos com os pinos correspondentes
Stepper myStepper(stepsPerRevolution, D1, D2, D3, D4);

// Definindo os pinos das chaves
const int rightButtonPin = D5;
const int leftButtonPin = D6;
const int speedButton500Pin = D7;
const int speedButton1000Pin = D8;

// Variáveis para armazenar o estado das chaves
int rightButtonState = LOW;
int leftButtonState = LOW;
int speed500State = LOW;
int speed1000State = LOW;

void setup() {
// Configurando os pinos das chaves como entradas
pinMode(rightButtonPin, INPUT);
pinMode(leftButtonPin, INPUT);
pinMode(speedButton500Pin, INPUT);
pinMode(speedButton1000Pin, INPUT);

// Iniciando a comunicação serial
Serial.begin(9600);
}

void loop() {
// Lendo o estado das chaves
rightButtonState = digitalRead(rightButtonPin);
leftButtonState = digitalRead(leftButtonPin);
speed500State = digitalRead(speedButton500Pin);
speed1000State = digitalRead(speedButton1000Pin);

// Verificando se uma direção e velocidade foram selecionadas
if ((rightButtonState == HIGH || leftButtonState == HIGH) && (speed500State == HIGH || speed1000State == HIGH)) {
if (rightButtonState == HIGH) {
if (speed500State == HIGH) {
myStepper.setSpeed(500);
} else {
myStepper.setSpeed(1000);
}
Serial.println("Girando para a direita...");
myStepper.step(stepsPerRevolution);
} else if (leftButtonState == HIGH) {
if (speed500State == HIGH) {
myStepper.setSpeed(500);
} else {
myStepper.setSpeed(1000);
}
Serial.println("Girando para a esquerda...");
myStepper.step(-stepsPerRevolution);
}
}
}

Welcome to the forum.

Like any "social network", this forum also has its rules.

Did you read the topic
"How to get the best out of this forum
when registering on the forum?

You have broken at least 3 rules. If you didn't read it, you have broken 4.

1st. You posted your topic in your native language, in an English language category;
2nd. You posted in a category not recommended for new topics (Uncategorized);
3rd. You posted your code without using recommended tags.

Now, to improve our help, I recommend that you redo your topic and include the schematic of your project.

Seja benvindo ao forum.

Como toda "rede social" este forum também tem suas regras.
Voce leu o tópico
"How to get the best out of this forum
ao se registrar no forum?
Voce cometeu quebrou pelo menos 3 regras. Se não leu, quebrou 4.

1a. Voce postou seu tópico em sua lingua natal, em uma categoria de lingua inglesa;
2a. Postou em uma caegoria não recomendada para novos tópicos (Uncategorized);
3a. Postou se codigo sem usar tags recomendadas.

Agora para melhorar nossa ajuda, recomendo que refaça seu tópico e inclua o esquematico do seu projeto.

Olá @gjiupato . Mudei seu tópico de uma categoria de idioma inglês para a categoria International > Português do fórum.

No futuro, por favor use a categoria apropriada para o idioma que você escolher para postar. Esta é uma parte importante do uso responsável do fórum, conforme explicado no guia "Como obter o melhor desse Fórum". O guia contém muitas outras informações úteis. Por favor, leia.

Agradecemos antecipadamente a sua cooperação.