Ottimizzazione codice - 4 motori passopasso lentissimi

Ciao,
il problema credo che stia nel fatto che non utilizzi correttamente la libreria (credo tu stia utilizzando airspayce.com AccelStepper).
Leggiti bene come funziona, non capisco perché abiliti e disabiliti tu il pin dell'enable del driver, fallo fare alla libreria se è proprio necessario! (vedi setEnablePin()) se il driver necessita di enable invertito dillo alla libreria (vedi setPinsInverted), è superfluo che setti tu i pin ad OUTPUT, lo fa la libreria, poi utilizzi la variabile S1_escursione che non ho ben capito a cosa serve, perché dopo 300 iterazioni della funzione loop() disabiliti il driver? (300 iterazioni è un tempo brevissimo, sicuro sia quello che vuoi fare?), poi i motori vanno frenati con la funzione stop() non bloccati disabilitando il driver altrimenti non utilizzerai mai le funzioni di accelerazione e decelerazione (abilitare il driver con un segnale di step già avviato potrebbe far perdere passi al motore se la frequenza è abbastanza alta), la funzione runSpeed() va chiamata sempre all'interno del loop non solo se si verificano certe condizioni, sempre per il fatto che le accelerazioni e decelerazioni non vengono calcolate se non chiami quella funzione.
Forse dovresti anche studiarti un po' della teoria dei motori passo-passo per capire come funzionano, ti consiglio, almeno per capire le basi, di leggerti il tutorial di VincenzoV è semplice da capire e spiega sufficientemente bene le basi dei motori passo-passo.

Dino