Arduino ponte H

delay(6000) e delay(15000)
durante queste pause nessun led cambia stato

certo
devi evitare i delay
dopo se nella ledfunzionamento() metti il test sul motore

ok raga alla fine ho risolto così ora tutto va alla perfezione. grazie per i consigli.

byte fcIndietro = 2; //pin 2 = fine corsa (indietro)
byte fcAvanti = 5; //pin 5 = fine corsa (avanti)
byte hBridge1 = 3; //pin 3 = 1A (ponte H)
byte hBridge2 = 10; //pin 4 = 2A (ponte H)
byte hBridgeEn = 9; //pin 9 = enable (ponte H)
byte fotocellula = 6; //pin 6 = fotocellula
byte ledSegnalazione = 4; //pin 4 = led di stato funzionamento cancello
unsigned long previousMillis = 0;
const long interval = 1000;
int ledState = LOW;

void setup() {
  pinMode(fcIndietro, INPUT);
  pinMode(fcAvanti, INPUT);
  pinMode(hBridge1, OUTPUT);
  pinMode(hBridge2, OUTPUT);
  pinMode(hBridgeEn, OUTPUT);
  pinMode(fotocellula, INPUT);
  pinMode(ledSegnalazione, OUTPUT);
  //inizializzo il motore sempre spento
  digitalWrite(hBridge1, LOW);
  digitalWrite(hBridge2, LOW);
  digitalWrite(hBridgeEn, HIGH);
  //inizializzo il Serial monitor
  Serial.begin(9600);
}

void loop() {

  ledFunzionamento();
  ledFunzionamento2();
  ledSpento();
  ledSpento2();
  ledSpento3();
  if ((digitalRead(fotocellula) == HIGH) && (digitalRead(hBridge2) == HIGH)) { //se leggo che il cancello si sta chiudendo e la fotocellula viene interotta
    fermaCancello();                                                           //fermo il cancello
    delay(6000);                                                               //per 6 secondi
    apriCancello();                                                            //e lo faccio riaprire facendogli eseguire la funzione del finecorsa
  }


  if (digitalRead(fcIndietro) == HIGH) {                                       // se il cancello tocca il finecorsa (indietro)
    fermaCancello();                                                           // fermo il motore
    delay(8000);                                                              // attendo 15 sec.
    chiudiCancello();                                                          // chiudo camcello
  }
  if (digitalRead(fcAvanti) == HIGH) {                                         // se il cancello tocca il finecorsa (avanti)
    fermaCancello();                                                           // ferma motore
  }

  //attendi un comando dalla serial
  if ( Serial.available()) {
    byte DataRX = Serial.read();

    if (DataRX == 49) {                                                        // carattere 1 avvia il motore a SX, il cancello si apre
      apriCancello();

    }
    if (DataRX == 50) {                                                        // carattere 2 avvia il motore a DX,
      chiudiCancello();                                                        // il cancello si chiude (ad esempio se aperto a mano)

    }
    if (DataRX == 48) {

      fermaCancello();                                           // Carattere 0 ferma il motore in caso
      // di guasti o malfunzionamenti

    }
  }
}

void apriCancello() {

  digitalWrite(hBridge1, HIGH);
  digitalWrite(hBridge2, LOW);
  Serial.println("apertura");
}
void chiudiCancello() {
  digitalWrite(hBridge1, LOW);
  digitalWrite(hBridge2, HIGH);
  Serial.println("chiusura");
}
void fermaCancello() {
  digitalWrite(hBridge1, LOW);
  digitalWrite(hBridge2, LOW);
  Serial.println("fermo");
}
void ledFunzionamento() {

  if (digitalRead(hBridge1) == HIGH) {


    unsigned long currentMillis = millis();
    if (currentMillis - previousMillis > interval) {
      previousMillis = currentMillis; //save the last time you blinked the LED
      //if the LED is off turn it on and vice-versa:
      ledState ^= 1;
      digitalWrite(ledSegnalazione, ledState);
    }
  }
}
void ledFunzionamento2() {

  if (digitalRead(hBridge2) == HIGH) {


    unsigned long currentMillis = millis();
    if (currentMillis - previousMillis > interval) {
      previousMillis = currentMillis; //save the last time you blinked the LED
      //if the LED is off turn it on and vice-versa:
      ledState ^= 1;
      digitalWrite(ledSegnalazione, ledState);
    }
  }
}
void ledSpento () {
  if (digitalRead(fcAvanti) == HIGH) {
    digitalWrite(ledSegnalazione, LOW);
  }
}
void ledSpento2 () {
  if (digitalRead(fcIndietro) == HIGH) {
    digitalWrite(ledSegnalazione, LOW);
  }
}
void ledSpento3 () {
  if (digitalRead(fotocellula) == HIGH) {
    digitalWrite(ledSegnalazione, LOW);
  }
}