Moteur PAP et fin de course

Bonjour,

J'ai suivi les conseils de PEPE, et ai repris l'ensemble de ce que je voulais faire
Cela fonctionne comme je le souhaite à un point près.
Pourquoi mon moteur fait une pose de: 1/2 à 1 seconde environ entre chaque boucle, alors que je ne relâche pas le bouton

/*
 * Bouton_rouge maintenu appuyé 
 * le moteur tourne en sens anti horaire par (pas de 10)
 * la led rouge clignote
 * quand arrive sur le fin_1 stoppe le moteur
 * allume la led_verte
 * bouton_noir maintenu appuyé
 * le moteur tourne en sens horaire par (pas de 10) 
 * la led rouge clignote
 * quand arrive sur le fin_2 stoppe le moteur
 * allume la led_rouge
 */

int led_rouge = 13;                       // pin 13 led rouge
int led_verte = 12;                       // pin 12 led verte
int fin_1 =42;
int fin_2 =44;
int bouton_noir=9;
int bouton_rouge=8;
int etat_bouton_noir;
int etat_bouton_rouge;
int etat_fin_1;
int etat_fin_2;



#include <Stepper.h>
//pour un moteur de 200 pas par tour et brancher sur les broches 2, 3, 4, 5
Stepper moteur(200, 5, 3, 4, 2);





void setup() {

 pinMode(led_rouge, OUTPUT);            // pin en sortie
 pinMode(led_verte, OUTPUT);            // pin en sortie
 pinMode(fin_1, INPUT);
 pinMode(fin_2, INPUT);
 pinMode (bouton_noir,INPUT);
 pinMode (bouton_rouge,INPUT);
 moteur.setSpeed(16);                    // Vitesse 30 tours par minute



}

void loop() {
boolean etat_fin_1 = digitalRead(fin_1);    //lecture du contact fin de course 1
boolean etat_fin_2 = digitalRead(fin_2);    //lecture du contact fin de course 2
boolean etat_bouton_noir = digitalRead(bouton_noir);
boolean etat_bouton_rouge = digitalRead(bouton_rouge);




if ((digitalRead(fin_1)==HIGH)&&        
     digitalRead(bouton_rouge)==HIGH)    
     { 
     
     moteur.step(10);
    

     }

if (digitalRead(fin_1)==LOW)
    {
    digitalWrite(led_verte, HIGH);
    digitalWrite(led_rouge, LOW);
   
    }



if
((digitalRead(fin_2)==HIGH)&&        
     digitalRead(bouton_noir)==HIGH)    
     {
 moteur.step(-10);
     

     }

if (digitalRead(fin_2)==LOW)
    {
    digitalWrite(led_verte, LOW);
    digitalWrite(led_rouge, HIGH);
   
    }
else if ((digitalRead(fin_1)==HIGH)&&
     digitalRead(fin_2)==HIGH)
     {
      digitalWrite(led_rouge,HIGH);
      delay(500);
      digitalWrite(led_rouge,LOW);
      delay(500);
     }
     
     }

Joël