ouverture/fermeture de porte

Bonsoir ,
Désolé de réitérer mon sujet, mais il semble avoir disparu (ai-je eu une connexion internet défaillante ? ).
J’essaie de faire un système de ouverture - fermeture de porte avec le jour, en utilisant un pont en H fait de 2 fois 2 relais.cela marche, mais ça boucle sans arret,j’ai essayer avec while,break,do-while, le système de la machine à états (JML), mais je n’y arrive pas.
Merci de votre aide

//MARCHE BIEN  MAIS RECOMENCE A OUVRIR OU FERMER LA PORTE A  CHAQUE TOUR ( car se base sur nouvelle mesur )  MEME SI DEJA FAIT = ON FERME UNE PORTE FERMEE OU ON OUVRE UNE PORTE OUVERTE = VA PAS

 Constantes
 RELAIS DU PONT EN H

const int relais1 = 2;
const int relais2 = 4;
const int relais3 = 7;
const int relais4 = 8;

// déclation interrupteur  haut et bas de course

int n=0;

// /INTERRUPTEUR ARRET FERMETURE ( en BAS )

int pinInterrupteurBAS = 11;
int etatInterrupteurBAS ;

// INTERRUPTEUR ARRET OUVERTURE ( en HAUT )

int pinInterrupteurHAUT = 12;
int etatInterrupteurHAUT ;

//le PULLUP fait que c'est 1 quand il n'y a contact ( vérifié .)
// -LE 1 ET LE 4 MARCHENT ENSEMBLE  +  ON DIT  JOUR
//   //LE 2 ET LE 3 MARCHENT ENSEMBLE  +   ON DIT  NUIT
//    HIGH = PAS DE COURANT
//    LOW =  COURANT

//PHOTORESISTANCE

int photoresistancePin = 0; // la photorésistance et le pulldown 10Kohms sont connectés à A0
int photoresistanceReading; //  lecture  de résistance analogique


// BRANCHEMENTS =    ( CHOIX DES PINS DIGITAL SANS PWM )
//     relais1  sur DIGITAL 2   FIL VIOLET
//     relais2  sur DIGITAL 4   FIL JAUNE
//     relais3  sur DIGITAL 7   FIL ORANGE
//     relais4  sur DIGITAL 8   FIL BLEU
// /     PHOTORESISTANCE ( 5549  ) sur A0 NE PAS OUBLIER LA RESISTANCE DE 10 KILO-OHMS  !!

void setup() {

  Serial.begin(9600);

  //declaration des pins pour les relais en sortie=

  pinMode (relais1, OUTPUT);
  pinMode (relais2, OUTPUT);
  pinMode (relais3, OUTPUT);
  pinMode (relais4, OUTPUT);

  //declaration de la pin pour la photoresistance en entrée=

  pinMode (photoresistancePin, INPUT);

  //declaration de la pin pour les interrupteurs en entrée PULLUP ( evite rebonds)=

  pinMode (pinInterrupteurBAS, INPUT_PULLUP);

  pinMode (pinInterrupteurHAUT, INPUT_PULLUP);

//  ETAT DE DEPART (pas de courant )
  digitalWrite(relais1,  HIGH);
  digitalWrite(relais2,  HIGH);
  digitalWrite(relais3, HIGH);
  digitalWrite(relais4,  HIGH);
}
void loop()
{

//  ETAT DE DEPART (pas de courant )
  digitalWrite(relais1,  HIGH);
  digitalWrite(relais2,  HIGH);
  digitalWrite(relais3, HIGH);
  digitalWrite(relais4,  HIGH);

  Serial.println(" - debut = eteint");
  delay (2000);


  // INTERRUPTEURS

 etatInterrupteurBAS = digitalRead (pinInterrupteurBAS);
  etatInterrupteurHAUT = digitalRead (pinInterrupteurHAUT);

//PHOTORESISTANCE

  Serial.println(" LECTURE LUMIERE");

  photoresistanceReading = analogRead(photoresistancePin);
  Serial.print("Analog reading = ");
  Serial.print(photoresistanceReading); // la lecture analogique
  // Nous aurons quelques seuils,à déterminer qualitativement par des essais
  if (photoresistanceReading < 150) {    //  SEUIL A DETERMINER
    Serial.println(" - NUIT");
  } else if (photoresistanceReading < 200 && photoresistanceReading > 150) {  //  SEUILS A DETERMINER
    Serial.println(" - Sombre  ATTENDRE");
  } else if (photoresistanceReading > 200) {  // SEUIL A DETERMINER
    Serial.println(" - JOUR");

  }
  Serial.println(" FIN LECTURE LUMIERE");
  delay(1000);  // DUREE DU DELAI  A DETERMINER POUR EVITER VA ET VIENT INTEMPESTIFS  !!

  // ACTIVATION OU DESACTIVATION DES RELAIS 2 PAR 2 POUR ACTIONNER LE MOTEUR
 
 
  //cas 1)      JOUR   :  CONDITION POUR FAIRE DECLENCHER LE MOTEUR DANS UN SENS ( ouverture )=

  if (photoresistanceReading > 200) {  //LE JOUR SE LEVE (ou une lumiére se promène : phare ....)
    Serial.println(" - JOUR ET  attente par securité");
    delay (2000);  //  permet de ne pas ouvrir si lumiere intempestive passe (10 minutes d'attente par securité)
  }

  if (photoresistanceReading < 200) {    // là , c'est encore la nuit , la porte reste fermée

    digitalWrite(relais1, HIGH);
    digitalWrite(relais2,  HIGH);
    digitalWrite(relais3,  HIGH);
    digitalWrite(relais4,  HIGH);
    Serial.println("  c'est encore la nuit , la porte reste fermée RIEN");
  }
  else  {

    // là , c'est bien le jour , la porte s'ouvre

    digitalWrite(relais1,  LOW);
    digitalWrite(relais2,  HIGH);
    digitalWrite(relais3,  HIGH);
    digitalWrite(relais4,  LOW);

    Serial.println(" - JOUR 0  =1/4 allumés");

    delay(5000);

  // là le Moteur tourne 1 seconde DONC A DETERMINER EN MESURANT LE TEMPS QU'IL FAUT AU MOTEUR POUR LEVER LA PORTE
    // PUIS ARRET COMPLET DU MOTEUR , LA PORTE RESTE OUVERTE

    digitalWrite(relais1, HIGH);
    digitalWrite(relais2, HIGH);
    digitalWrite(relais3, HIGH);
    digitalWrite(relais4,  HIGH);

    Serial.println(" - JOUR 1 ARRET DU MOTEUR = eteint");
    delay(2000);
  }
  Serial.print(etatInterrupteurHAUT);
  Serial.print(446);

  // le moteur ne reçoit plus de courant, il reste comme cà

  // cas 2       AUBE / CREPUSCULE
  if (photoresistanceReading > 100 && photoresistanceReading < 200) { //PERIODE INCERTAINE , PERMET QUE LA PORTE NE FASSE PAS DES ALLER-RETOUR SANS ARRET
    digitalWrite(relais1,  HIGH);
    digitalWrite(relais2, HIGH);
    digitalWrite(relais3,  HIGH);
    digitalWrite(relais4, HIGH);

    Serial.println(" - JOUR -nuit --- RIEN NE BOUGE = eteint");

   delay (2000);   //  permet de ne pas fermer si un gros nuage noir passe (10 minutes d'attente par securité)
  }
 // RIEN NE BOUGE
  // cas 3  // la  nuit arrive    NUIT

  if (photoresistanceReading < 100 ) {
    delay (2000);                //  permet de ne pas fermer si un gros nuage noir passe (10 minutes d'attente par securité)
    Serial.println(" -ARRIVEE DE LA NUIT -ATTENTE SECURITE ");
  }

  if (photoresistanceReading > 200) {   // là , c'est encore le jour , la porte reste ouverte
    digitalWrite(relais1, HIGH);
    digitalWrite(relais2,  HIGH);
    digitalWrite(relais3, HIGH);
    digitalWrite(relais4,  HIGH);

    Serial.println(" - JOUR 2  --  attente que la nuit soit bien tombée  = eteint");

    delay (2000);
  }
  else  {                         // là , c'est bien la nuit , la porte se ferme

    digitalWrite(relais1,  HIGH);
    digitalWrite(relais2,  LOW);//------------------------
    digitalWrite(relais3,  LOW);//-----------------
    digitalWrite(relais4,  HIGH);

    Serial.println(" - NUIT1 = 2/3 allumés");

    delay (5000);              // là le Moteur tourne 5 seconde DONC A DETERMINER EN MESURANT LE TEMPS QU'IL FAUT AU MOTEUR POUR baisser LA PORTE
    // PUIS ARRET COMPLET DU MOTEUR , LA PORTE RESTE FERMEE

    digitalWrite(relais1, HIGH);
    digitalWrite(relais2,  HIGH);
    digitalWrite(relais3, HIGH);
    digitalWrite(relais4,  HIGH);

    Serial.println(" - NUIT2 ARRET COMPLET DU MOTEUR , LA PORTE RESTE FERMEE  = eteint");
    delay (1000);

    Serial.print(etatInterrupteurBAS);
    Serial.print(22);
    }
  }
// le moteur ne reçoit plus de courant, il reste comme cà, et attend

Il est censé nous apprendre quoi, votre tuto?

Bonsoir,
Excusez moi, mais il ne s'agit pas d'un tuto, mais d'une question posée sur le forum.
Quelqu'un pourrait-il le déplacer ?
Merci

Bonsoir
C'est a toi de demander au modérateur le déplacement de la, question au bon endroit.

Ne pas encombrer ce sous forum avec des questions !

Utilises le lien 'Report to Miderastor' pour demander le déplacement. ...ou la suppression si tu as fait un doublon