Buenos días.
Al final lo he solucionado.
He conseguido una librería llamada MobaTools y he adaptado uno de los ejemplos que traía a mi proyecto evitando hacer el bucle "for", donde creo que estaba el problema, e incluyendo todo, el encendido del led y el movimiendo del motor repetitivo, dentro de un "if".
De todos modos gracias a todos los que han atendido mi duda.
Dejo el scketch final por aquí por si a alguien le sirve.
#include <MobaTools.h>
int LED = 9;
int ON_OFF_MOTOR = 12;
const byte DIRECCION_MOTOR = 10;
const byte PASOS_MOTOR = 11;
const int PASOS_POR_VUELTA = 1600; //El driver está configurado en 1/16 micropasos
const byte botonPin = 3;
const int velocidad = 1000;
const int intervalopasos = 1000; //Intervalo entre pasos 1 segundo
int PPR = 141;
bool status, statusAnt = false;
bool botonStatus = false;
MoToStepper myStepper ( PASOS_POR_VUELTA, STEPDIR );
MoToTimebase intervall;
void girar_derecha();
void setup() {
myStepper.attach( PASOS_MOTOR, PASOS_MOTOR );
myStepper.setSpeed( 300 );
intervall.setBasetime( intervalopasos );
pinMode(botonPin, INPUT); // tu pulsador esta conectado entre GND y el PIN, nada mas.
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
status = digitalRead(botonPin);
if (!status && statusAnt) { // cuando pulses el boton pasa de 1 a 0
botonStatus = !botonStatus;
digitalWrite(LED, botonStatus);
}
if (botonStatus) {
delay(500);
myStepper.doSteps( PPR );
}
statusAnt = status;
}