erreur code fin_de_course_bas

Bonjour,

j'ai un petit problème étant débutant dans le domaine de arduino. j'ai un message d'erreur, vous pouvez me dire comment corriger le message.
merci beaucoup. ('fin_de_course_bas' was not declared in this scope)
ps: le code que j'ai mit n'est pas complet car ça dépasse le 9000 mots. il faut aller sur le lien et aller tout en bas et copier le code

int commande_haut = 4; // Déclaration broche Bouton fermeture
int commande_bas = 5; // Déclaration broche Bouton ouverture
int fin_de_course_haut = 6; // Capteur fin de course haut
int MotorPin1 = 8;  // Déclaration broche IN1 L293D
int MotorPin2 = 9;  // Déclaration broche IN2 L293D
int MotorPin3 = 10; // Déclaration broche IN3 L293D
int MotorPin4 = 11; // Déclaration broche IN4 L293D

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

int Tour = 0;
int delayTime = 10; // Temps entre chaque pas 10ms
int Seuil_Jour = 350; // Variable de luminosité seuil pour le jour
int Seuil_Nuit = 200; // 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); // Ouverture du port série et debit de communication fixé à 9600 bauds
pinMode(commande_haut, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée BP haut
pinMode(commande_bas, INPUT_PULLUP); // Déclaration entrée pull-up sur entrée BP bas
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
pinMode(MotorPin3, OUTPUT); // Déclaration de la sortie B- Moteur
pinMode(MotorPin4, OUTPUT); // Déclaration de la sortie B+ Moteur

Lance_initialisation();
}


void Lance_initialisation() {
Fermer_porte_Initialisation();
}


void loop() {
Luminosite = analogRead(LuminositePin);
if (Initialisation) {
Serial.println(Luminosite); // Affichage sur le moniteur série du texte
 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 tempo"); // Affichage sur le moniteur série du texte
 }
 if (Detecte_lumiere && tempoActive && ((millis() - tempoDepart) >= Tempo_luminosite))
 {
   Jour = true;
   Serial.println("Il fait jour"); // Affichage sur le moniteur série du texte
   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"); // Affichage sur le moniteur série du texte
   tempoActive = false;
   if (!fdch  && !porte_fermee){
   Fermer_porte();
 }}
 mem_lumiere = Detecte_lumiere;
}

etat_bp_h = !digitalRead(commande_haut); // Inverse de la lecture sur entrée BP haut
etat_bp_b = !digitalRead(commande_bas); // Inverse de la lecture sur entrée BP bas
fdch = !digitalRead(fin_de_course_haut); // Inverse de la lecture sur entrée Fin de course haut

if (fdch != mem_fdch) // Changement d'état du fin de course haut (front montant ou descendant)
{
 if (fdch) 
 {
   Serial.println("Porte fermée !"); // Affichage sur le moniteur série du texte
 }
 if (!fdch)
 {
   Serial.println("Porte non fermée"); // Affichage sur le moniteur série du texte
 }
}
mem_fdch = fdch; // Mémorisation du nouvel état du fin de course haut

if (etat_bp_h != mem_h) // Changement d'état du bouton poussoir haut (front montant ou descendant)
{
 Serial.println("Appui BP Haut"); // Affichage sur le moniteur série du texte
 if (etat_bp_h && !etat_bp_b && !fdch && !porte_fermee) // Appui sur BP haut mais pas sur le bas
 {
   Fermer_porte(); // Lancer la fonction sens normal
 }
}
mem_h = etat_bp_h; // Mémorisation du nouvel état du bouton haut
if (etat_bp_b != mem_b) // Changement d'état du bouton poussoir bas (front montant ou descendant)
{
 if (etat_bp_b && !etat_bp_h && !fdcb && !porte_ouverte) // Appui sur BP bas mais pas sur le haut
 {
   if (!fdcb) {
     Ouvrir_porte();
   }
 }
}
mem_b = etat_bp_b; // Mémorisation du nouvel état du bouton bas
}

STP : Faire un Nouveau Sujet ou le corriger avec les Balises... - Français - Arduino Forum

bonjour,

insère cette ligne

int fin_de_course_bas = 7; // fdc haut

juste apres celle la

int fin_de_course_haut = 6; // Capteur fin de course haut

c'est vraiment a la mode les portes de poulailler :slight_smile:

Un projet bâclé parmi tant d'autres.

Je te signalerai simplement une chose : fin_de_course_bas est bien initialisé :
pinMode(fin_de_course_bas, INPUT_PULLUP);

Mais il n'est utilisé nulle part dans le code, c'est à dire que pour l'ouverture, seul un nombre de pas moteur (320) est pris en compte.
Supprime donc simplement cette ligne.

D'autre part l'auteur ne précise pas de quel moteur il s'agit. Apparemment il utilise un moteur PAP de récupération.
Rien ne dit que tu obtiendras un résultat équivalent avec un autre moteur.

Quel moteur envisages-tu ?

Entre nous je suis en train moi-même de mener une étude de portillon de ce genre.

La porte à pont levis impose l'utilisation d'une ou deux ficelles apparentes, exposées aux intempéries, soleil, pluie, gel, ainsi qu'aux dégradations possibles par des animaux.

Des débris peuvent encombrer l'emplacement de la charnière et l’empêcher de se fermer complètement.

La porte est maintenue fermée par le moteur. Si l'on utilise un motoréducteur, l'ouverture manuelle sera difficile, grâce à la démultiplication liée aux engrenages, mais un moteur pas à pas à un couple de détente (sans alimentation) très faible.
Or l'auteur de ton projet coupe l'alimentation du moteur une fois la porte ouverte ou fermée.

La porte fermée ne doit offrir aucune prise qui permettrait de l'ouvrir en tirant dessus.

Si la hauteur le permet une porte à guillotine (coulissant verticalement) et un motoréducteur continu seraient préférables.
Voir ici : http://moncastel.free.fr/forum/trappePoule/

https://forum.arduino.cc/index.php?topic=379566.0