Hola, soy un principiante en el uso de motores paso a paso, y estoy aprendiendo a medida que avanzo.
Sin embargo, me preguntaba si habría una manera de retrasar los pasos entre cada paso en mi motor paso a paso sin usar la demora, porque entiendo que usar la demora pone todo el programa en espera. En el futuro, me gustaría poder que el usuario ingrese un número diferente de pasos para cada paso a paso. O bien, coloque la pata del pulgar de ps2 conectada para que los motores de pasos puedan moverse simultáneamente en los ejes x e y (ya que estoy haciendo un cnc), lo que resulta en una línea diagonal.
A pesar de la demora en que los steppers se ejecutan al mismo tiempo, vibran muy mal. Sin embargo, indivdualmente son suaves, por lo que sospecho que puede ser debido a la demora.
Entonces, ¿algún pensamiento? Aquí está el código.
int IN1 = 5;
int IN2 = 4;
int IN3 = 3;
int IN4 = 2;
int IN1_1 = 9;
int IN2_1 = 8;
int IN3_1 = 7;
int IN4_1 = 6;
int delay_time= 5;
int count = 0;
int i = 1;
void setup(){
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(IN1_1, OUTPUT);
pinMode(IN2_1, OUTPUT);
pinMode(IN3_1, OUTPUT);
pinMode(IN4_1,OUTPUT);
Serial.begin(9600);
}
void loop(){
int s = 200;
int x = 0;
//Function that rotates the first stepper motor
step_one();
// Fucntion that rotates the second stepper motor
step_two();
}
//definition of these functions
void step_one(){
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(delay_time);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(delay_time);
//I want something else to be able to replace these delays
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(delay_time);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(delay_time);
}
void step_two(){
digitalWrite(IN1_1, LOW);
digitalWrite(IN2_1, HIGH);
digitalWrite(IN3_1, HIGH);
digitalWrite(IN4_1, LOW);
delay(delay_time);
digitalWrite(IN1_1, LOW);
digitalWrite(IN2_1, HIGH);
digitalWrite(IN3_1, LOW);
digitalWrite(IN4_1, HIGH);
delay(delay_time);
digitalWrite(IN1_1, HIGH);
digitalWrite(IN2_1, LOW);
digitalWrite(IN3_1, LOW);
digitalWrite(IN4_1, HIGH);
delay(delay_time);
digitalWrite(IN1_1, HIGH);
digitalWrite(IN2_1, LOW);
digitalWrite(IN3_1, HIGH);
digitalWrite(IN4_1, LOW);
delay(delay_time);
}