Errore codice per progetto arduino Pedana mobile

questo fa' partire i motori insieme

# define FP1 2    //Finecorsa1 pedana
# define FP2 3    //Finecorsa2 pedana
# define FP3 4    //Finecorsa3 pedana
# define FP4 5    //Finecorsa4 pedana
# define FPR 6    //Finecorsa pedana RITORNO
# define MPA 9    //Relè Motore avanti pedana
# define MPI 10   //Relè Motore indietro pedana
# define FC1 8    //Finecorsa1 cubo
# define FC2 7    //Finecorsa2 cubo
# define MCA 11   //Relè Motore avanti cubo
# define MCI 12   //Relè Motore indietro cubo

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(FC1, INPUT_PULLUP);
  pinMode(FC2, INPUT_PULLUP);
  pinMode(MPA, OUTPUT);
  pinMode(MPI, OUTPUT);
  pinMode(MCA, OUTPUT);
  pinMode(MCI, OUTPUT);
  digitalWrite(MCI, HIGH); // disattiva i relè
  digitalWrite(MCA, HIGH);
  digitalWrite(MPI, HIGH);
  digitalWrite(MPA, HIGH);

  motore_cubo_stop();
  motore_pedana_stop();
  Serial.println("inizia pedana fino alla posizione di Start");
  reset_pedana(); // il motore va' fino a posizione di Start

  Serial.println("Inizia cubo fino alla posizione di Start");
  reset_cubo(); //Il motore sposta il cubo fino alla posizione di Start
}


void loop() {

  // 1° Step *************************************
  Serial.println("Inizia Primo Step");
  motore_pedana_avanti() ;
  motore_cubo_avanti();
  while (digitalRead(FP2) != LOW || digitalRead(FC2) != LOW ) {
    if (digitalRead(FP2) == 0 )   {
      motore_pedana_stop();
    }
    if (digitalRead(FC2) == 0 )   {
      motore_cubo_stop();
    }
  }
  motore_pedana_stop();
  motore_cubo_stop();
  Serial.println("finito Primo Step");
  // attivare led
  delay(ritardo);

  // 2° Step *************************************
  Serial.println("Inizia Secondo Step");
  motore_pedana_avanti() ;
  motore_cubo_indietro();
  while (digitalRead(FP3) != LOW || digitalRead(FC1) != LOW ) {
    if (digitalRead(FP3) == 0 )   {
      motore_pedana_stop();
    }
    if (digitalRead(FC1) == 0 )   {
      motore_cubo_stop();
    }
  }
  motore_pedana_stop();
  motore_cubo_stop();
  Serial.println("finito Secondo Step");
  // attivare led
  delay(ritardo);

  // 3° Step *************************************
  Serial.println("Inizia Terzo Step");
  motore_pedana_avanti() ;
  motore_cubo_avanti();
  while (digitalRead(FP4) != LOW || digitalRead(FC2) != LOW ) {
    if (digitalRead(FP4) == 0 )   {
      motore_pedana_stop();
    }
    if (digitalRead(FC2) == 0 )   {
      motore_cubo_stop();
    }
  }
  motore_pedana_stop();
  motore_cubo_stop();
  Serial.println("finito Terzo Step");
  // attivare led
  delay(ritardo);

  // 4° Step *************************************
  Serial.println("Inizia Quarto Step");
  motore_pedana_avanti() ;
  motore_cubo_indietro();
  while (digitalRead(FPR) != LOW || digitalRead(FC1) != LOW ) {
    if (digitalRead(FPR) == 0 )   {
      motore_pedana_stop();
    }
    if (digitalRead(FC1) == 0 )   {
      motore_cubo_stop();
    }
  }
  motore_pedana_stop();
  motore_cubo_stop();
  Serial.println("finito Quarto Step");
  // attivare led
  delay(ritardo);

  // fine del ciclo. Torna a posizione di Start
  Serial.println();
  Serial.println("Torna a Start e rincomincia");
  reset_pedana();
  //il cubo è già in posizione

} // 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 reset_cubo() {
  while (digitalRead(FC1) == HIGH)  { // legge sensore di posizione iniziale
    motore_cubo_indietro(); // avvia motore indietro fino al sensore di posizione iniziale
  }
  Serial.println("finito reset. Posizionato cubo su Start"); // esce dal while quando si attiva il sensore di posizione iniziale
  motore_cubo_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);
}

void motore_cubo_avanti() {
  digitalWrite(MCA, LOW);
  digitalWrite(MCI, HIGH);
}

void motore_cubo_indietro() {
  digitalWrite(MCA, HIGH);
  digitalWrite(MCI, LOW);
}

void motore_cubo_stop() {
  digitalWrite(MCA, HIGH);
  digitalWrite(MCI, HIGH);
}