#include <Servo.h>
// Pines del motor paso a paso
const int pinPaso = 9; // STEP en A4988
const int pinDireccion = 8; // DIR en A4988
// Pines de los botones
const int botonAdelante = 5;
const int botonAtras = 4;
// Pines del servo y potenciómetro
const int pinServo = 3;
const int pinPot = A0;
Servo myServo;
void setup() {
// Configurar motor paso a paso
pinMode(pinPaso, OUTPUT);
pinMode(pinDireccion, OUTPUT);
// Configurar botones (PULLDOWN)
pinMode(botonAdelante, INPUT);
pinMode(botonAtras, INPUT);
// Configurar servo
myServo.attach(pinServo);
// Iniciar con motor detenido
digitalWrite(pinPaso, LOW);
}
void loop() {
// Controlar servo con potenciómetro
int potValue = analogRead(pinPot);
int angle = map(potValue, 0, 1023, 0, 180);
myServo.write(angle);
// Controlar motor paso a paso
if(digitalRead(botonAdelante) == HIGH) {
moveMotor(HIGH, 50); // Mover 50 pasos adelante
}
if(digitalRead(botonAtras) == HIGH) {
moveMotor(LOW, 50); // Mover 50 pasos atrás
}
}
// Función para mover el motor
void moveMotor(bool direction, int steps) {
digitalWrite(pinDireccion, direction); // Establecer dirección
for(int i=0; i<steps; i++) {
digitalWrite(pinPaso, HIGH);
delay(1);
digitalWrite(pinPaso, LOW);
}
}