Projet porte de poulailler automatique

Bonjour ,
Je recommence tout.
J'ai dans l'idée à presque 50 ans et sans aucune connaissance dans ce domaine d'automatiser ma porte de poulailler avec une carte UNO ,2 capteurs de fin de course(haut et bas) et une LDR.
Pour le moment ne sont connecté sur la breadboard que:

  • la carte UNO
  • les 2 capteurs
  • la LDR
    j'utilise le code en pièce jointe
    La phase d'initialisation se déroule sans pb
    Ensuite j'ai un cycle d'ouverture par rapport à la LDR
    Je déclenche bien mon capteur de position bas
    Je déclenche bien la fermeture par rapprt à la LDR
    Et ensuite plus rien
    Je suit le programme avec le moniteur série
    Donc si il y une âme charitable dans ce monde je veux bien un petit coup de main
    Merci d'avance

poulailler.ino (8.89 KB)

Et ensuite plus rien

Vous appuyez bien sur votre autre fin de course ?
Les avez vous testés ?

Sinon quand vous faites

if (!fdcb  && !porte_ouverte) {
        Ouvrir_porte();
      }

vous n’avez pas lu fdcb Avant donc vous testez une vieille valeur
Idem pour l’autre

if (!fdch  && !porte_fermee){
      Fermer_porte();
    }}

Si vous indentiez le code (appuyez sur ctrl-T ou cmd-T) ce serait plus lisible

Bonjour
Q'entendez-vous par indentiez le code (appuyez sur ctrl-T ou cmd-T) ce serait plus lisible.
J'ai bien essayé avec des balises mais message d'erreur me disant que message trop long .

Dans l’IDE avant de copier le code appuyez sur ctrl-T
Ça le met en forme proprement

Il y a plein d’exemple de code pour une porte de poulailler sur le forum, jetez y un oeil c’est formateur.

Très bien je m'occupe de cela ce soir .
Merci beaucoup

Salut.
Je ne vois pas l'intérêt de mémoriser l'état des FDC.
Si l'un des FDC est à LOW cela veut dire que la porte est ouverte ou fermée. Si aucun des deux n'est à LOW il y a incertitude.
Aucun besoin de s'occuper du front montant ou descendant.

D'autre part fermer la porte au démarrage : pourquoi ?
S'il fait jour on ouvre, s'il fait nuit on ferme.

Je doute de la fiabilité des FDC. Il faut vraiment utiliser des modèles ILS pour que ce soit fiable.
porte-motorisee-de-poulailler-1ere
Dans ce projet je n'utilise pas de FDC, j'insère une résistance de 1Ω entre le GND du LD293 et le GND de l'alimentation, et je mesure la tension aux bornes de la résistance, donc le courant.

int FinCHaut = 11;// entrée du fin de course HAUT. Une broche sur la masse l'autre sur l'arduino
int FinCBas = 12;// entrée du fin de course BAS. Une broche sur la masse l'autre sur l'arduino
int D2 = 2;//monté
int D3 = 3;//descente

//variable pour stocker la valeur lue après conversion


void setup()
{
// démarrage la liaison série entre entrée analogique et ordi
Serial.begin(9600);
//Déclaration des contacts fin de course en entrée avec utilisation de la fonction PULLUP interne
pinMode(12, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l'arduino.
//Donc de base lorsque le boutton n'est pas appuyé on lit un état haut (5V = niveau logique 1)
pinMode(11, INPUT_PULLUP);
}

void loop()
{
    int val;
      val=analogRead(0);
    //Valeur comprise entre 0 et 1024
    //on affiche la valeur lue sur la liaison série
    Serial.print("PhotoRLue = ");
    Serial.println(val,DEC);//print the value to serial
      delay(500);

    if (val <520 && FinCBas == 1)         //Condition : Detection de la nuit et la porte est ouverte
    //Alors on ferme la porte
    {
      while(digitalRead(FinCBas) == 1){  //Tant que la porte n'est pas fermé, le moteur tourne   
          //Fermeture
        digitalWrite(D2, LOW);
        digitalWrite(D3, HIGH);
      }
        digitalWrite(D3, LOW);    //On arrete le moteur car le contact fin de course est activé
    }   
    if (val > 520 && FinCHaut == 1)         //Condition : Detection du jour et la porte est fermée FinCHaut = 1 signifie le boutton fin de course haut n'est pas appuyé
    {
            while(digitalRead(FinCHaut) == 1){  //Tant que la porte n'est pas ouverte, le moteur tourne   
          //Fermeture
        digitalWrite(D2, HIGH);
        digitalWrite(D3, LOW);
      }
    digitalWrite(D2, LOW);
    }
}

oups désolé pas le bon code

Pour le moment en simulation dans mon salon mes fin de course fonctionnement correctement .
Pour le code ne se déroule pas comme il faut

int fin_de_course_bas = 2; // Capteur fin de course bas
int fin_de_course_haut = 3; // Capteur fin de course haut
int MotorPin1 = 13;  // Déclaration broche IN1 L298P
int MotorPin2 = 11;  // Déclaration broche IN2 L298P

int LuminositePin = A0; // Déclaration broche LDR
int Luminosite = 0; // Variable de la luminosité

int Seuil_Jour = 500; // Variable de luminosité seuil pour le jour
int Seuil_Nuit = 200; // Variable de luminosité seuil pour la nuit
int Tempo_luminosite = 3000; // Temporisation luminosité 10 secondes = 10000ms

boolean porte_fermee = false;
boolean porte_ouverte = false;
boolean fdcb = false;
boolean fdch = false;
boolean mem_fdch = false, mem_fdcb = false;
boolean mem_lumiere = false;
boolean Initialisation = false;
boolean Detecte_lumiere = false;
boolean Jour = false;
boolean tempoActive = false;
unsigned long tempoDepart = 0;





void setup() {
  Serial.begin(9600);
  pinMode(fin_de_course_bas, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée Fin de course bas
  pinMode(fin_de_course_haut, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée Fin de course haut
  pinMode(MotorPin1, OUTPUT); // Déclaration de la sortie A- Moteur
  pinMode(MotorPin2, OUTPUT); // Déclaration de la sortie A+ Moteur
  Lance_Initialisation();
}

void Lance_Initialisation() {
  Fermer_Porte_Initialisation();
}
void loop() {
  Luminosite = analogRead(LuminositePin);
  if (Initialisation) {
    //Serial.println(Luminosite);
    if (Luminosite >= Seuil_Jour)
    {
      Detecte_lumiere = true;
    }
    if (Luminosite <= Seuil_Nuit)
    {
      Detecte_lumiere = false;
    }
    if (Detecte_lumiere != mem_lumiere) {
      tempoActive = true;
      tempoDepart = millis();
      Serial.println("La lumière lance la tempo");
    }
    if (Detecte_lumiere && tempoActive && ((millis() - tempoDepart) >= Tempo_luminosite))
    {
      Jour = true;
      Serial.println("Il fait jour");
      tempoActive = false;
      if (!fdcb && !porte_ouverte) {
        Ouvrir_Porte();
      }
    }
    mem_lumiere = Detecte_lumiere;
    if (!Detecte_lumiere && tempoActive && (millis() - tempoDepart) >= Tempo_luminosite)
    {
      Jour = false;
      Serial.println("Il fait nuit");
      tempoActive = false;
      if (!fdch && !porte_fermee) {
        Fermer_Porte();
      }
    }
    mem_lumiere = Detecte_lumiere;
  }
  if (fdch != mem_fdch)
  {
    if (fdcb)
    {
      Serial.println("Porte Fermée");
    }
    if (!fdcb)
    {
      Serial.println("Porte Ouverte");
    }
  }
  mem_fdcb = fdcb;
}
// }
//}


void Fermer_Porte_Initialisation() {
  delay(10000);
  while (!fdcb) {
    digitalWrite(MotorPin1, HIGH);
    digitalWrite(MotorPin2, LOW) ;
    Serial.println("Initialisation de La Porte");
    fdcb = !digitalRead(fin_de_course_bas);
    if (fdcb)
    {
      Serial.println("Porte Fermée");
      Arret();
      porte_fermee = true;
      porte_ouverte = false;
      Initialisation = true;
      break;
    }
  }
}

void Fermer_Porte() {
  while (!fdcb) {
    digitalWrite(MotorPin1, HIGH);
    digitalWrite(MotorPin2, LOW) ;
    Serial.println("Fermeture de la Porte");
    fdcb = !digitalRead(fin_de_course_bas);
    if (fdcb)
    {
      porte_fermee = true;
      porte_ouverte = false;
      Serial.println("Porte en Position Fermée");
      Arret();
      break;
    }

  }
}

void Ouvrir_Porte() {
  while (!fdch) {
    digitalWrite(MotorPin1, LOW);
    digitalWrite(MotorPin2, HIGH) ;
    Serial.println("Ouverture de la Porte");
    fdch = !digitalRead(fin_de_course_haut);
    if (fdch)
    {
      porte_fermee = false;
      porte_ouverte = true;
      Serial.println("Porte en Position Ouverte");
      Arret();
      break;
    }
  }
}


void Arret() {
  digitalWrite(MotorPin1, LOW);
  digitalWrite(MotorPin2, LOW);
  tempoActive = 0;
}

Examiner ce qui est affiché sur la console.
Au besoin ajouter des Serial.println()

Je peux te dire déjà que :
mem_fdch restera à false
mem_fdcb ne sert à rien

Tu as partiellement tenu compte de mes remarques.

Mon vieux cerveau est en ébullition dans ce monde ,nouveau pour moi de la programmation.
Mais qui ne tente rien n'a rien
Du coup je repars de zéro avec ce nouveau code

int fin_de_course_haut = 3; // Capteur fin de course haut
int fin_de_course_bas = 2; /// Capteur fin de course bas
int MotorPin1 = 13;  // Déclaration broche IN1 L298P
int MotorPin2 = 11;  // Déclaration broche IN2 L298P


int LuminositePin = A0; // Déclaration broche LDR
int Luminosite = 0; // Variable de la luminosité


int Seuil_Jour = 550; // Variable de luminosité seuil pour le jour
int Seuil_Nuit = 400; // Variable de luminosité seuil pour la nuit
int Tempo_luminosite = 10000; // Temporisation luminosité 10 secondes = 10000ms

boolean porte_fermee = false; //Déclaration variable porte fermée
boolean porte_ouverte = false; //Déclaration variable porte ouverte
boolean fdch = false; // Déclaration variable Fin de Course Haut
boolean fdcb = false; // Déclaration variable Fin de Course Bas
boolean etat_bp_h = false, etat_bp_b = false; // Déclaration des variables bas et haut
boolean mem_h = false, mem_b = false, mem_fdch = false,  mem_fdcb = false; // Déclaration des mémoires
boolean mem_mouvement = false; // Déclaration de la mémoire mouvement
boolean mem_lumiere = false; // Déclaration de la mémoire lumière
boolean mem_init = false; // Déclaration de la mémoire initialisation
boolean Detecte_lumiere = false; // Déclaration variable détection lumière
boolean Jour = true; // Déclaration variable Jour = 1 | Nuit = 0
boolean Initialisation = false; // Déclaration variable initialisation

// État d'activation de la tempo
boolean tempoActive = false;

// Temps à l'activation de la tempo
unsigned long tempoDepart = 0;

void setup() {
  Serial.begin(9600);
  pinMode(fin_de_course_haut, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée Fin de course haut
  pinMode(fin_de_course_bas, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée Fin de course bas
  pinMode(MotorPin1, OUTPUT); // Déclaration de la sortie A- Moteur
  pinMode(MotorPin2, OUTPUT); // Déclaration de la sortie A+ Moteur

  Lance_initialisation();
}

void Lance_initialisation() {
  Fermeture_porte_Initialisation();
}

void loop() {
  Luminosite = analogRead(LuminositePin);
  if (Initialisation) {

    if (Luminosite >= Seuil_Jour)
    { Serial.println("Il fait jour");
      delay(5000);
      Ouverture_de_la_porte();
    }
    if (Luminosite <= Seuil_Nuit)
    { Serial.println("Il fait nuit");
      delay(5000);
      Fermeture_de_la_porte();
    }
  }
}




void Fermeture_porte_Initialisation() {
  delay(5000);
  while (!fdcb) {
    digitalWrite(MotorPin1, HIGH);
    digitalWrite(MotorPin2, HIGH);

    Serial.println("Initialisation Porte Fermée"); // Affichage sur le moniteur série du texte
    fdcb = !digitalRead(fin_de_course_bas);

    if (fdcb)
    {
      Serial.println("Porte fermée"); // Affichage sur le moniteur série du texte
      Arret();
      porte_fermee = true;
      porte_ouverte = false;
      Initialisation = true;
      break;
    }
  }
}

void Fermeture_de_la_porte() {
  while (!fdcb) {
    digitalWrite(MotorPin1, HIGH);
    digitalWrite(MotorPin2, HIGH);

    Serial.println("Fermer la porte"); // Affichage sur le moniteur série du texte

    fdcb = !digitalRead(fin_de_course_bas);

    if (fdcb )
    {
      porte_fermee = true;
      porte_ouverte = false;
      Serial.println("Porte fermée"); // Affichage sur le moniteur série du texte
      Arret();
      break;
    }
  }
}

void Ouverture_de_la_porte() {
  while (!fdch) {
    digitalWrite(MotorPin1, LOW);
    digitalWrite(MotorPin2, HIGH);

    Serial.println("Ouverture de la porte"); // Affichage sur le moniteur série du texte

    fdch = !digitalRead(fin_de_course_haut);

    if (fdch )
    {
      porte_fermee = true;
      porte_ouverte = false;
      Serial.println("Porte ouverte"); // Affichage sur le moniteur série du texte
      Arret();
      break;
    }
  }
}

void Arret() {
  digitalWrite(MotorPin1, LOW);
  digitalWrite(MotorPin2, LOW);

  tempoActive = 0;
}

Nouveau programme nouveau problème :slight_smile: :slight_smile:
La phase d'initialisation de la porte se déroule comme il faut
La LDR détecte le jour
Le moteur tourne dans le sens pour ouvrir la porte
Mon fin de course haut arrête la rotation moteur
La LDR détecte la nuit
Et là plus rien

Ta fonction commence directement par while (!fdch) {
alors que tu n'as pas lu le capteur au préalable.

Pourquoi utiliser des variables ?

  while (!digitalRead(fin_de_course_haut)) {

  if (!digitalRead(fin_de_course_haut)) {

Idem pour capteur bas.

Vous parlez bien dans :
void ouverture de la porte
void fermeture de la porte

int fin_de_course_haut = 3; // Capteur fin de course haut
int fin_de_course_bas = 2; /// Capteur fin de course bas
int MotorPin1 = 13;  // Déclaration broche IN1 L298P
int MotorPin2 = 11;  // Déclaration broche IN2 L298P


int LuminositePin = A0; // Déclaration broche LDR
int Luminosite = 0; // Variable de la luminosité


int Seuil_Jour = 550; // Variable de luminosité seuil pour le jour
int Seuil_Nuit = 400; // Variable de luminosité seuil pour la nuit
int Tempo_luminosite = 10000; // Temporisation luminosité 10 secondes = 10000ms

boolean porte_fermee = false; //Déclaration variable porte fermée
boolean porte_ouverte = false; //Déclaration variable porte ouverte
boolean fdch = false; // Déclaration variable Fin de Course Haut
boolean fdcb = false; // Déclaration variable Fin de Course Bas
boolean etat_bp_h = false, etat_bp_b = false; // Déclaration des variables bas et haut
boolean mem_h = false, mem_b = false, mem_fdch = false,  mem_fdcb = false; // Déclaration des mémoires
boolean mem_mouvement = false; // Déclaration de la mémoire mouvement
boolean mem_lumiere = false; // Déclaration de la mémoire lumière
boolean mem_init = false; // Déclaration de la mémoire initialisation
boolean Detecte_lumiere = false; // Déclaration variable détection lumière
boolean Jour = true; // Déclaration variable Jour = 1 | Nuit = 0
boolean Initialisation = false; // Déclaration variable initialisation

// État d'activation de la tempo
boolean tempoActive = false;

// Temps à l'activation de la tempo
unsigned long tempoDepart = 0;

void setup() {
  Serial.begin(9600);
  pinMode(fin_de_course_haut, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée Fin de course haut
  pinMode(fin_de_course_bas, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée Fin de course bas
  pinMode(MotorPin1, OUTPUT); // Déclaration de la sortie A- Moteur
  pinMode(MotorPin2, OUTPUT); // Déclaration de la sortie A+ Moteur

  Lance_initialisation();
}

void Lance_initialisation() {
  Fermeture_porte_Initialisation();
}

void loop() {
  Luminosite = analogRead(LuminositePin);
  if (Initialisation) {

    if (Luminosite >= Seuil_Jour )
    { Serial.println("Il fait jour");
      delay(5000);
      Ouverture_de_la_porte();
    }
    if (Luminosite <= Seuil_Nuit )
    { Serial.println("Il fait nuit");
      delay(5000);
      Fermeture_de_la_porte();
    }
  }
}




void Fermeture_porte_Initialisation() {
  delay(5000);
  while (!fdcb) {
    digitalWrite(MotorPin1, HIGH);
    digitalWrite(MotorPin2, HIGH);

    Serial.println("Initialisation Porte Fermée"); // Affichage sur le moniteur série du texte
    fdcb = !digitalRead(fin_de_course_bas);

    if (fdcb)
    {
      Serial.println("Porte fermée"); // Affichage sur le moniteur série du texte
      Arret();
      porte_fermee = true;
      porte_ouverte = false;
      Initialisation = true;
      break;
    }
  }
}

void Fermeture_de_la_porte() {
  if (!digitalRead(fin_de_course_bas)) {
    digitalWrite(MotorPin1, HIGH);
    digitalWrite(MotorPin2, HIGH);

    Serial.println("Fermer la porte"); // Affichage sur le moniteur série du texte

    fdcb = !digitalRead(fin_de_course_bas);

    if (fdcb )
    {
      porte_fermee = true;
      porte_ouverte = false;
      Serial.println("Porte fermée"); // Affichage sur le moniteur série du texte
      Arret();
      break;
    }
  }
}

void Ouverture_de_la_porte() {
  if (!digitalRead(fin_de_course_haut) ) 
  {
    digitalWrite(MotorPin1, LOW);
    digitalWrite(MotorPin2, HIGH);

    Serial.println("Ouverture de la porte"); // Affichage sur le moniteur série du texte

    fdch = !digitalRead(fin_de_course_haut);

    if (fdch )
    {
      porte_fermee = false;
      porte_ouverte = true;
      Serial.println("Porte ouverte"); // Affichage sur le moniteur série du texte
      Arret();
      break;
    }
  }
}

void Arret() {
  digitalWrite(MotorPin1, LOW);
  digitalWrite(MotorPin2, LOW);

  tempoActive = 0;
}

Parce ce que du coup maintenant erreur
Arduino : 1.8.12 (Linux), Carte : "Arduino Uno"

/home/tofies/Arduino/renouveaupoulailler/renouveaupoulailler.ino: In function 'void Fermeture_de_la_porte()':
renouveaupoulailler:104:7: error: break statement not within loop or switch
break;
^~~~~
/home/tofies/Arduino/renouveaupoulailler/renouveaupoulailler.ino: In function 'void Ouverture_de_la_porte()':
renouveaupoulailler:125:7: error: break statement not within loop or switch
break;
^~~~~
exit status 1
break statement not within loop or switch

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

je n'ai pas dit de supprimer les boucles while()

Du coup maintenant c'est pire
Initialisation de la porte en position fermée -->OK
La LDR détecte le jour
Message "Il fait jour "
Et plus rien

int fin_de_course_haut = 3; // Capteur fin de course haut
int fin_de_course_bas = 2; /// Capteur fin de course bas
int MotorPin1 = 13;  // Déclaration broche IN1 L298P
int MotorPin2 = 11;  // Déclaration broche IN2 L298P


int LuminositePin = A0; // Déclaration broche LDR
int Luminosite = 0; // Variable de la luminosité


int Seuil_Jour = 550; // Variable de luminosité seuil pour le jour
int Seuil_Nuit = 400; // Variable de luminosité seuil pour la nuit
int Tempo_luminosite = 10000; // Temporisation luminosité 10 secondes = 10000ms

boolean porte_fermee = false; //Déclaration variable porte fermée
boolean porte_ouverte = false; //Déclaration variable porte ouverte
boolean fdch = false; // Déclaration variable Fin de Course Haut
boolean fdcb = false; // Déclaration variable Fin de Course Bas
boolean etat_bp_h = false, etat_bp_b = false; // Déclaration des variables bas et haut
boolean mem_h = false, mem_b = false, mem_fdch = false,  mem_fdcb = false; // Déclaration des mémoires
boolean mem_mouvement = false; // Déclaration de la mémoire mouvement
boolean mem_lumiere = false; // Déclaration de la mémoire lumière
boolean mem_init = false; // Déclaration de la mémoire initialisation
boolean Detecte_lumiere = false; // Déclaration variable détection lumière
boolean Jour = true; // Déclaration variable Jour = 1 | Nuit = 0
boolean Initialisation = false; // Déclaration variable initialisation

// État d'activation de la tempo
boolean tempoActive = false;

// Temps à l'activation de la tempo
unsigned long tempoDepart = 0;

void setup() {
  Serial.begin(9600);
  pinMode(fin_de_course_haut, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée Fin de course haut
  pinMode(fin_de_course_bas, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée Fin de course bas
  pinMode(MotorPin1, OUTPUT); // Déclaration de la sortie A- Moteur
  pinMode(MotorPin2, OUTPUT); // Déclaration de la sortie A+ Moteur

  Lance_initialisation();
}

void Lance_initialisation() {
  Fermeture_porte_Initialisation();
}

void loop() {
  Luminosite = analogRead(LuminositePin);
  if (Initialisation) {

    if (Luminosite >= Seuil_Jour )
    { Serial.println("Il fait jour");
      delay(5000);
      Ouverture_de_la_porte();
    }
    if (Luminosite <= Seuil_Nuit )
    { Serial.println("Il fait nuit");
      delay(5000);
      Fermeture_de_la_porte();
    }
  }
}




void Fermeture_porte_Initialisation() {
  delay(5000);
  while (!fdcb) {
    digitalWrite(MotorPin1, HIGH);
    digitalWrite(MotorPin2, HIGH);

    Serial.println("Initialisation Porte Fermée"); // Affichage sur le moniteur série du texte
    fdcb = !digitalRead(fin_de_course_bas);

    if (fdcb)
    {
      Serial.println("Porte fermée"); // Affichage sur le moniteur série du texte
      Arret();
      porte_fermee = true;
      porte_ouverte = false;
      Initialisation = true;
      break;
    }
  }
}

void Fermeture_de_la_porte() {

  while (!digitalRead(fin_de_course_bas)) {
    if (!digitalRead(fin_de_course_bas)) {
      digitalWrite(MotorPin1, HIGH);
      digitalWrite(MotorPin2, HIGH);

      Serial.println("Fermer la porte"); // Affichage sur le moniteur série du texte

      fdcb = !digitalRead(fin_de_course_bas);

      if (fdcb )
      {
        porte_fermee = true;
        porte_ouverte = false;
        Serial.println("Porte fermée"); // Affichage sur le moniteur série du texte
        Arret();
        break;
      }
    }
  }
}

void Ouverture_de_la_porte() {

  while (!digitalRead(fin_de_course_haut)) {
    if (digitalRead(fin_de_course_haut)) {
      digitalWrite(MotorPin1, LOW);
      digitalWrite(MotorPin2, HIGH);

      Serial.println("Ouverture de la porte"); // Affichage sur le moniteur série du texte

      fdch = !digitalRead(fin_de_course_haut);

      if (fdch )
      {
        porte_fermee = false;
        porte_ouverte = true;
        Serial.println("Porte ouverte"); // Affichage sur le moniteur série du texte
        Arret();
        break;
      }
    }
  }
}

void Arret() {
  digitalWrite(MotorPin1, LOW);
  digitalWrite(MotorPin2, LOW);

  tempoActive = 0;
}

le chemin va être long

void Fermeture_porte_Initialisation() {
  delay(5000);
  while (!fdcb) {
// ...

A ton avis combien vaut fdcb si tu ne lis pas le capteur ?
Je ne t'ai pas dit de ne pas passer par des variables ?

Ok pour void fermeture de la porte et void ouverture de la porte
Mais void fermeture porte initialisation fonctionne correctement
Je vais essayer tout de même

Oui OK rien à voir.

Au besoin ajouter des Serial.println()

Remarque bien que je ne vois toujours pas l'intérêt de fermer la porte au démarrage, alors que s'il fait jour il faudra l'ouvrir aussitôt après.

Du coup je sors l'initialisation de la porte au démarrage

int fin_de_course_haut = 3; // Capteur fin de course haut
int fin_de_course_bas = 2; /// Capteur fin de course bas
int MotorPin1 = 13;  // Déclaration broche IN1 L298P
int MotorPin2 = 11;  // Déclaration broche IN2 L298P


int LuminositePin = A0; // Déclaration broche LDR
int Luminosite = 0; // Variable de la luminosité


int Seuil_Jour = 550; // Variable de luminosité seuil pour le jour
int Seuil_Nuit = 400; // Variable de luminosité seuil pour la nuit
int Tempo_luminosite = 10000; // Temporisation luminosité 10 secondes = 10000ms

boolean porte_fermee = false; //Déclaration variable porte fermée
boolean porte_ouverte = false; //Déclaration variable porte ouverte
boolean fdch = false; // Déclaration variable Fin de Course Haut
boolean fdcb = false; // Déclaration variable Fin de Course Bas
boolean etat_bp_h = false, etat_bp_b = false; // Déclaration des variables bas et haut
boolean mem_h = false, mem_b = false, mem_fdch = false,  mem_fdcb = false; // Déclaration des mémoires
boolean mem_mouvement = false; // Déclaration de la mémoire mouvement
boolean mem_lumiere = false; // Déclaration de la mémoire lumière
boolean mem_init = false; // Déclaration de la mémoire initialisation
boolean Detecte_lumiere = false; // Déclaration variable détection lumière
boolean Jour = true; // Déclaration variable Jour = 1 | Nuit = 0
boolean Initialisation = false; // Déclaration variable initialisation

// État d'activation de la tempo
boolean tempoActive = false;

// Temps à l'activation de la tempo
unsigned long tempoDepart = 0;

void setup() {
  Serial.begin(9600);
  pinMode(fin_de_course_haut, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée Fin de course haut
  pinMode(fin_de_course_bas, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée Fin de course bas
  pinMode(MotorPin1, OUTPUT); // Déclaration de la sortie A- Moteur
  pinMode(MotorPin2, OUTPUT); // Déclaration de la sortie A+ Moteur


}

void loop() {
  Luminosite = analogRead(LuminositePin);
  Serial.println(Luminosite);

  if (Luminosite >= Seuil_Jour )
  { Serial.println("Il fait jour");
    delay(5000);
    Ouverture_de_la_porte();
  }
  if (Luminosite <= Seuil_Nuit )
  { Serial.println("Il fait nuit");
    delay(5000);
    Fermeture_de_la_porte();
  }
}

void Fermeture_de_la_porte() {

  while (!digitalRead(fin_de_course_bas) == 0) {
    if (digitalRead(fin_de_course_bas) == 0) {
      digitalWrite(MotorPin1, HIGH);
      digitalWrite(MotorPin2, HIGH);

      Serial.println("Fermer la porte"); // Affichage sur le moniteur série du texte

      fdcb = !digitalRead(fin_de_course_bas);

      if (fdcb )
      {
        porte_fermee = true;
        porte_ouverte = false;
        Serial.println("Porte fermée"); // Affichage sur le moniteur série du texte
        Arret();
        break;
      }
    }
  }
}



void Ouverture_de_la_porte() {

  while (!digitalRead(fin_de_course_haut) == 0) {
    if (digitalRead(fin_de_course_haut) == 0) {
      digitalWrite(MotorPin1, LOW);
      digitalWrite(MotorPin2, HIGH);

      Serial.println("Ouverture de la porte"); // Affichage sur le moniteur série du texte

      fdch = !digitalRead(fin_de_course_haut);

      if (fdch )
      {
        porte_fermee = false;
        porte_ouverte = true;
        Serial.println("Porte ouverte"); // Affichage sur le moniteur série du texte
        Arret();
        break;
      }
    }
  }
}


void Arret() {
  digitalWrite(MotorPin1, LOW);
  digitalWrite(MotorPin2, LOW);

  tempoActive = 0;
}

J'affiche la valeur dela LDR soit 955
J'affiche 955
Et plus rien

Affiche plus d'informations pour pouvoir suivre le déroulement.