// Definir los pines de control del primer motor
#define STEP_PIN_1 3 // Pin para el paso del primer motor
#define DIR_PIN_1 4 // Pin para la dirección del primer
motor
#define BUTTON_PIN_UP_1 5 // Pin para el botón de subida del
primer motor
#define BUTTON_PIN_DOWN_1 6 // Pin para el botón de bajada del
primer motor
// Definir los pines de control del segundo motor
#define STEP_PIN_2 7 // Pin para el paso del segundo motor
#define DIR_PIN_2 8 // Pin para la dirección del segundo
motor
#define BUTTON_PIN_UP_2 9 // Pin para el botón de subida del
segundo motor
#define BUTTON_PIN_DOWN_2 10 // Pin para el botón de bajada del
segundo motor
// Definir el número de pasos por revolución
const int STEPS_PER_REV = 200;
void setup() {
// Configurar los pines como salida para los motores y como
entrada para los botones
pinMode(STEP_PIN_1, OUTPUT);
pinMode(DIR_PIN_1, OUTPUT);
pinMode(BUTTON_PIN_UP_1, INPUT);
pinMode(BUTTON_PIN_DOWN_1, INPUT);
pinMode(STEP_PIN_2, OUTPUT);
pinMode(DIR_PIN_2, OUTPUT);
pinMode(BUTTON_PIN_UP_2, INPUT);
pinMode(BUTTON_PIN_DOWN_2, INPUT);
}
void loop() {
// Control del primer motor
if (digitalRead(BUTTON_PIN_UP_1) == HIGH) {
// Configurar la dirección del primer motor (sentido horario)
digitalWrite(DIR_PIN_1, HIGH);
moveMotor(STEP_PIN_1);
} else if (digitalRead(BUTTON_PIN_DOWN_1) == HIGH) {
// Configurar la dirección del primer motor (sentido anti-
horario)
digitalWrite(DIR_PIN_1, LOW);
moveMotor(STEP_PIN_1);
} else {
// Apagar el primer motor cuando no se presiona ningún botón
digitalWrite(STEP_PIN_1, LOW);
}
// Control del segundo motor
if (digitalRead(BUTTON_PIN_UP_2) == HIGH) {
// Configurar la dirección del segundo motor (sentido horario)
digitalWrite(DIR_PIN_2, HIGH);
moveMotor(STEP_PIN_2);
} else if (digitalRead(BUTTON_PIN_DOWN_2) == HIGH) {
// Configurar la dirección del segundo motor (sentido anti-
horario)
digitalWrite(DIR_PIN_2, LOW);
moveMotor(STEP_PIN_2);
} else {
// Apagar el segundo motor cuando no se presiona ningún botón
digitalWrite(STEP_PIN_2, LOW);
}
}
// Función para mover el motor
void moveMotor(int stepPin) {
// Mover el motor una vez (un paso)
for (int i = 0; i < STEPS_PER_REV; i++) {
digitalWrite(stepPin, HIGH); // Activar el paso del
motor
delayMicroseconds(500); // Retardo para
establecer la velocidad del motor
digitalWrite(stepPin, LOW); // Desactivar el paso del
motor
delayMicroseconds(500); // Retardo para
establecer la velocidad del motor
}
}