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