const int stepPin = 2;
const int dirPin = 3;
const int potPin = A0;
const int delayMin = 1; // Velocidad constante (motor activo)
const int delayMax = 5000; // Motor detenido
const int centro = 512; // Valor central del potenciómetro
int delayMotor = delayMin;
void setup() {
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
digitalWrite(dirPin, HIGH); // Dirección fija
}
void loop() {
int valorPot = analogRead(potPin);
if (valorPot <= centro) {
// Motor activo a velocidad constante
delayMotor = delayMin;
} else {
// Iniciar desaceleración progresiva
delayMotor += 10;
if (delayMotor > delayMax) delayMotor = delayMax;
}
// Solo generar pulsos si el motor no está detenido
if (delayMotor < delayMax) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(delayMotor);
digitalWrite(stepPin, LOW);
delayMicroseconds(delayMotor);
}
delay(5); // Suaviza la transición
}