Errore codice per progetto arduino Pedana mobile

A parte il fatto che non leggi i sensori (manca il digitalRead() ), quindi il motore si avvia e mai piu' si ferma.
Anche se li leggi, si ferma al primo sensore che trova e mai più riparte

Ti voglio dare un'aiutino, quindi ti metto una base su cui lavorare. Ho cercato di farla semplice, sperando che tu riesca a comprenderla meglio. Come denominazione dei sensori preferisco quella che usavi prima

# define FP1 2    //Finecorsa1 pedana 
# define FP2 3    //Finecorsa2 pedana 
# define FP3 4    //Finecorsa3 pedana 
# define FP4 5    //Finecorsa4 pedana 
# define FPR 6    //Finecorsa RITORNO
# define MPA 9    //Relè Motore avanti pedana
# define MPI 10   //Relè Motore indietro pedana

boolean stato_errore =  false ;
unsigned int ritardo = 5000 ; // tempo in cui pedana stà ferma

void setup()
{
  Serial.begin (9600);
  
  pinMode(FP1, INPUT_PULLUP); // sensore posizione iniziale
  pinMode(FP2, INPUT_PULLUP);
  pinMode(FP3, INPUT_PULLUP);
  pinMode(FP4, INPUT_PULLUP);
  pinMode(FPR, INPUT_PULLUP);
  pinMode(MPA, OUTPUT);
  pinMode(MPI, OUTPUT);
 
  motore_pedana_stop();
  Serial.println("inizia fino alla posizione di Start");
  reset_pedana(); // il motore va' fino a posizione di Start
}


void loop() {

  // 1° Step *************************************
  Serial.println("Inizia Primo Step");
  motore_pedana_avanti() ;
  while (digitalRead(FP2) == HIGH ) {
    if (digitalRead(FP3) == 0 || digitalRead(FP4) == 0 || digitalRead(FPR) == 0 )
    {
      stato_errore = true ;
      break ;
    }
  }
  motore_pedana_stop();
  if (stato_errore)
  {
    errore_sensori();
  }
  Serial.println("finito Primo Step");
  delay(ritardo);
  // attivare cubo
  // attivare led


  // 2° Step *************************************
  Serial.println("Inizia Secondo Step");
  motore_pedana_avanti() ;
  while (digitalRead(FP3) == HIGH ) {
    if (digitalRead(FP4) == 0 || digitalRead(FPR) == 0 || digitalRead(FP1) == 0 )
    {
      stato_errore = true ;
      break ;
    }
  }
  motore_pedana_stop();
  if (stato_errore)
  {
    errore_sensori();
  }
  Serial.println("finito Secondo Step");
  delay(ritardo);
  // attivare cubo
  // attivare led


  // 3° Step *************************************
  Serial.println("Inizia Terzo Step");
  motore_pedana_avanti() ;
  while (digitalRead(FP4) == HIGH ) {
    if (digitalRead(FPR) == 0 || digitalRead(FP1) == 0 || digitalRead(FP2) == 0 )
    {
      stato_errore = true ;
      break ;
    }
  }
  motore_pedana_stop();
  if (stato_errore)
  {
    errore_sensori();;
  }
  Serial.println("finito Terzo Step");
  delay(ritardo);
  // attivare cubo
  // attivare led

  // 4° Step *************************************
  Serial.println("Inizia Quarto Step");
  motore_pedana_avanti() ;
  while (digitalRead(FPR) == HIGH ) {
    if (digitalRead(FP1) == 0 || digitalRead(FP2) == 0 || digitalRead(FP3) == 0 )
    {
      stato_errore = true ;
      break ;
    }
  }
  motore_pedana_stop();
  if (stato_errore)
  {
    errore_sensori();
  }
  Serial.println("finito Quarto Step");
  delay(ritardo);
  // attivare cubo
  // attivare led

  // fine del ciclo. Torna a posizione di Start
  Serial.println();
  Serial.println("Torna a Start e rincomincia");
  reset_pedana();

} // Fine LOOP ***************************

void errore_sensori() { // Se un sensore non richiesto si attiva
  Serial.println();
  Serial.println("Errore sui sensori");
  // tone (pin_buzzer,frequenza); // Attiva un buzzer
    while (1); // blocca tutto e aspetta un reset Hardware ( volendo si puo' inserire un Reset software)
    }

void reset_pedana() {
  while (digitalRead(FP1) == HIGH)  { // legge sensore di posizione iniziale
    motore_pedana_indietro(); // avvia motore indietro fino al sensore di posizione iniziale
  }
  Serial.println("finito reset. Posizionato su Start"); // esce dal while quando si attiva il sensore di posizione iniziale
  motore_pedana_stop();
}

void motore_pedana_avanti() {
  digitalWrite(MPA, LOW);
  digitalWrite(MPI, HIGH);
}

void motore_pedana_indietro() {
  digitalWrite(MPA, HIGH);
  digitalWrite(MPI, LOW);
}

void motore_pedana_stop() {
  digitalWrite(MPA, HIGH);
  digitalWrite(MPI, HIGH);
}

e visto che ancora devi capire come strutturare un programma, abituati a stendere su carta i vari passaggi