não sei se é códico ou ligação motor gira somente para um lado
Código arduíno motor de passo e driver tb6600 com 4 botões, botão 1 girar motor sentido anti horário e quando soltar botão parar motor, botão 2 girar motor sentido horário quando soltar botão parar motor, botão 3 girar motor sentido horário valor pré definido e quando acionar fim de curso motor girar este mesmo valor, botão 4 girar motor sentido horário com outro valor pré definido e quando acionar fim de curso motor girar com este outro valor pré definido, segue o codigo
#include <Stepper.h>
// Definições do motor de passo
#define STEPS_PER_REVOLUTION 200
Stepper motor(STEPS_PER_REVOLUTION, 8, 9, 10, 11);
// Pinos dos botões
#define BUTTON_PIN_1 2
#define BUTTON_PIN_2 3
#define BUTTON_PIN_3 4
#define BUTTON_PIN_4 5
// Pinos dos fins de curso
#define ENDSTOP_PIN_1 6
#define ENDSTOP_PIN_2 7
// Variáveis de controle
bool motorRunning = false;
bool endstop1Reached = false;
bool endstop2Reached = false;
void setup() {
motor.setSpeed(300); // Defina a velocidade do motor aqui
pinMode(BUTTON_PIN_1, INPUT_PULLUP);
pinMode(BUTTON_PIN_2, INPUT_PULLUP);
pinMode(BUTTON_PIN_3, INPUT_PULLUP);
pinMode(BUTTON_PIN_4, INPUT_PULLUP);
pinMode(ENDSTOP_PIN_1, INPUT_PULLUP);
pinMode(ENDSTOP_PIN_2, INPUT_PULLUP);
}
void loop() {
// Botão 1 - Sentido anti-horário
if (digitalRead(BUTTON_PIN_1) == LOW) {
motorRunning = true;
motor.step(-1);
} else {
motorRunning = false;
}
// Botão 2 - Sentido horário
if (digitalRead(BUTTON_PIN_2) == LOW) {
motorRunning = true;
motor.step(1);
} else {
motorRunning = false;
}
// Botão 3 - Giro com valor pré-definido
if (digitalRead(BUTTON_PIN_3) == LOW) {
motorRunning = true;
motor.step(100); // Substitua pelo valor desejado
} else if (digitalRead(ENDSTOP_PIN_1) == LOW && motorRunning) {
motor.step(100); // Substitua pelo valor desejado
motorRunning = false;
}
// Botão 4 - Giro com outro valor pré-definido
if (digitalRead(BUTTON_PIN_4) == LOW) {
motorRunning = true;
motor.step(200); // Substitua pelo valor desejado
} else if (digitalRead(ENDSTOP_PIN_2) == LOW && motorRunning) {
motor.step(200); // Substitua pelo valor desejado
motorRunning = false;
}
}