#define x_paso 15 // Define el Pin de STEP para Motor de eje X
#define x_dire 2 // Define el Pin de DIR para Motor de eje X
#define x_habi 4 // Define el Pin de ENABLE para Motor de eje X
#define FINAL_DE_CARRERA 13
int retardo = 3000; // Menor numero el giro es mas rapido
int tiempo = 100; // durante cuanto timpo da el giro el motor (vueltas)
void setup() {
pinMode(x_paso, OUTPUT); pinMode(x_dire, OUTPUT); pinMode(x_habi, OUTPUT);
}
void loop() {
giro(x_paso, x_dire, x_habi,, 1);
delay(1000);
giro(x_paso, x_dire, x_habi, 0);
delay(1000);
int final_de_carrera = digitalRead(FINAL_DE_CARRERA);
// Verificar si el final de carrera está activado
if (final_de_carrera == LOW) {
// Detener el motor
digitalWrite(x_paso, LOW);
return; // Salir de la función loop()
}
// Si el final de carrera no está activado, continuar con el movimiento del motor
digitalWrite( x_dire ,HIGH); // Establecer la dirección del motor en sentido horario
// Generar un pulso de paso
digitalWrite( x_paso,HIGH);
delay(1); // Retardo de 10 milisegundos
digitalWrite(x_paso, LOW);
delay(2); // Retardo de 10 milisegundos
}
void giro(int paso_, int dire_, int habi_, int dir) {
digitalWrite(habi_, LOW); // Habilita el Driver
if ( dir == 0) {
digitalWrite(dire_, LOW); // direccion de giro 0
for (int i = 0; i < tiempo; i++) { // da pasos por un tiempo
digitalWrite(paso_, HIGH);
delayMicroseconds(retardo);
digitalWrite(paso_, LOW);
delayMicroseconds(retardo);
}
}
if ( dir == 1) {
digitalWrite(dire_, HIGH); // direccion de giro 1
for (int i = 0; i < tiempo; i++) { // da pasos por un tiempo
digitalWrite(paso_, HIGH);
delayMicroseconds(retardo);
digitalWrite(paso_, LOW);
delayMicroseconds(retardo);
}
}
digitalWrite(habi_, HIGH); // quita la habilitacion del
}