4 – Void (loop)

void loop()
{
  while (SerialGPS.available() > 0)
  {
    if (gps.encode(SerialGPS.read()))
    {
      if (gps.date.isValid())
      {
        Day = gps.date.day();
        Month = gps.date.month();
        Year = gps.date.year();
      }
      if (gps.time.isValid())
      {
        Hour = gps.time.hour() + changement_heure; // ajuste UTC (heure hivers +1 - heure été +2)
        Minute = gps.time.minute();
        Second = gps.time.second();
      }
      GestionZero(); // Ajout 0 si var < 10

      val_heure = zh + String(Hour) + ":" + zmn + String(Minute) + ":" + zs + String(Second);
      val_date = String(Day) + "/" + zmois + String(Month) + "/" + String(Year);
      total_mn_gps = (Hour) * 60 + Minute; // calcul nb total en minutes des heures du GPS
    }
  }

  // ------------------------- Conversion des heures en minutes & calcul tranche début fin --------------------------
  if (T1_Debut_EV1 != "")
  {
    T1_Debut_EV1_Int = T1_Debut_EV1.toInt();
  }

  if (T1_Debut_M_EV1 != "")
  {
    T1_Debut_M_EV1_Int = T1_Debut_M_EV1.toInt();
  }

  if (T1_Nb_Cycle_EV1 != "")
  {
    Nb_Cycle_EV1_Int = T1_Nb_Cycle_EV1.toInt();
  }

  if (T1_Periode_Cycle_EV1 != "")
  {
    T1_Periode_Cycle_EV1_Int = T1_Periode_Cycle_EV1.toInt();
  }

  if (T1_Duree_Cycle_EV1 != "")
  {
    T1_Duree_Cycle_EV1_Int = T1_Duree_Cycle_EV1.toInt();
  }

  // ----------------------------------- traitement des tranches à afficher sur la page web -----------------------------

  T1M = ""; // Ajout 0 si mn entre 0et 9
  if (T1_Debut_M_EV1_Int < 10)
  {
    T1M = "0";
  }
  T1_Total_Debut_EV1 = T1_Debut_EV1_Int * 60 + T1_Debut_M_EV1_Int + T1_Periode_Cycle_EV1_Int * T1_Cpt_Nb_Cycle_EV1; // Conversion des heures en minutes
  T1_Total_Fin_Cycle_EV1 = T1_Total_Debut_EV1 + T1_Duree_Cycle_EV1_Int;                                             // Calcul de la fin des cycles
  if (T1_Total_Fin_Cycle_EV1 == total_mn_gps && T1_Cpt_Nb_Cycle_EV1 < Nb_Cycle_EV1_Int)                             // A la fin du cycle calcul le cycle suivant
  {
    T1_Cpt_Nb_Cycle_EV1++;
  }

  if (T1_Cpt_Nb_Cycle_EV1 == Nb_Cycle_EV1_Int)
  {
    T1_Cpt_Nb_Cycle_EV1 = 0;
  }
  //------------------------------Gestion des cde de sortie électrovannes (PCF8475) -----------------------------
  I_EV1 = PCF_21.read(7); // inter marche/arrêt forcée EV1
  I_EV2 = PCF_21.read(6); // inter march/arrête forcée EV2
  I_EV3 = PCF_21.read(5); // inter marche/arrêt forcée EV3
  I_EV4 = PCF_21.read(4); // inter marche/arrêt forcée EV4

  if (inputMessage1 == "4" && inputMessage2 == "0")
  {
    Mode_AM = 0;
    inputMessage1 == "";
  }

  if (inputMessage1 == "4" && inputMessage2 == "1")
  {
    Mode_AM = 1;
    inputMessage1 == "";
  }

  //* ----------------------- Marche/Arrêt mode manuel -----------------------
  if (Mode_AM == 0)
  {
      val_out = 5; //! permet de na pas activer les sortie de 0 à 4 (essai)
      val_state = 0;
    if (inputMessage1 == "3")
    {
      if (I_EV1 == 1 || inputMessage2 == "1")
      {
        PCF_21.write(S_EV1, 0); // Marche EV1
      }
      else if (I_EV1 == 0 || inputMessage2 == "0")
      {
        PCF_21.write(S_EV1, 1); //  Arrêt EV1
      }
    }

    if (inputMessage1 == "2")
    {
      if (I_EV2 == 1 || inputMessage2 == "1")
      {
        PCF_21.write(S_EV2, 0); // Marche EV2
      }
      else if (I_EV2 == 0 || inputMessage2 == "0")
      {
        PCF_21.write(S_EV2, 1); //  Arrêt EV2
      }
    }
    if (inputMessage1 == "1")
    {
      if (I_EV3 == 1 || inputMessage2 == "1")
      {
        PCF_21.write(S_EV3, 0); // Marche EV3
      }
      else if (I_EV3 == 0 || inputMessage2 == "0")
      {
        PCF_21.write(S_EV3, 1); //  Arrêt EV3
      }
    }
    if (inputMessage1 == "0")
    {
      if (I_EV4 == 1 || inputMessage2 == "1")
      {
        PCF_21.write(S_EV4, 0); // Marche EV4
      }
      else if (I_EV4 == 0 || inputMessage2 == "0")
      {
        PCF_21.write(S_EV4, 1); //  Arrêt EV4
      }
    }
  }

  //* ----------------------- Marche/Arrêt mode automatique -----------------------
  if (Mode_AM == 1)
  {
    // if (((total_mn_gps >= T1_Total_Debut_EV1) && (total_mn_gps < T1_Total_Fin_Cycle_EV1)))
    if (total_mn_gps >= T1_Total_Debut_EV1 && total_mn_gps < T1_Total_Fin_Cycle_EV1)
    {
      PCF_21.write(S_EV1, 0); // marche auto
      val_out = 3;
      val_state = 1;
    }
    else
    {
      PCF_21.write(S_EV1, 1); // arrêt auto
      val_out = 3;
      val_state = 0;
    }
  }

  affiche_ecran();
}