Besoin d'aide pour commander moteur PaP avec une LDR

Bonjour , j'essaie actuellement de programmer avec Arduino le pilotage de 2 moteurs PaP + ULN2003 . Les moteurs servent à lever le matin 2 portes d'un poulailler et de les refermer à la tombée de la nuit. J'utilise donc une LDR mais ça ne fonctionne pas. Le tout est connecté à une carte Arduino mega. Qui pourrait me donner un coup de main?
Je me suis fortement inspiré de ce site : Tutoriels pour Arduino • Afficher le sujet - Moteur pas à pas unipolaire + driver ULN2003 + Arduino et j'utilise le même matériel. J'ai rajouté une LDR sur le circuit , en utilisant 2 solutions. Soit la LDR sur une entrée analogique A0 par exemple et je compare par >< à la valeur moyenne d'environ 700, soit la LDR sur la sortie logique 2, qui suivant la valeur donnée par la LDR donne 0 ou 1.
je précise que lorsque je ne mets pas de LDR, le programme Arduino de l'exemple de départ fonctionne très bien, le moteur tourne dans un sens puis dans l'autre, je fais varier la vitesse de rotation ainsi que le nombre de tours, ce qui me convient très bien pour mon poulailler, avec une poulie diametre 10mm sur le moteur, un tour fait relever la porte de 62,8 mm environ.
pour compléter, je joins le schéma du circuit que je souhaite programmer ainsi que deux vues du projet conçu sous Sketchup. Pour le programme, j'ai fait un essai avec Ardublock Education car je ne trouvais pas les instructions pour les moteurs PàP dans Blockly, et je n'y connais pratiquement rien dans Arduino
En recopiant par ci par là des morceaux de code, j'ai fait un semblant de programme arduino qui fonctionne avec la LDR mais lorsqu'il fait jour, le moteur tourne de 1024 pas (un demi tour comme je l'ai réglé) puis fait une pause, mais ensuite re-tourne dans le même sens de 1024 pas et ainsi de suite. Idem dans la position nuit mais la rotation est en sens inverse. Comment faire pour que la rotation ne se fasse qu'une seule fois jusqu'à ce que l'état de la LDR change. je joins le programme arduino

//Inclure la librairie stepper.h
 #include <Stepper.h>
 #define STEPS 100
  
  //Créer une instance de la classe stepper
  //Le moteur (fils 1 2 3 4) est branché sur les sorties 8 9 10 11 de l'Arduino (et sur GND, +V)
  Stepper small_stepper(STEPS, 8, 10, 9, 11);     // Sens horaire
  
  //Stepper small_stepper(STEPS, 11, 10, 9, 8);  // Sens anti-horaire en inversant 8 et 11 (si on préfère)
  int  Steps2Take = 0;  //Nombre de pas de rotation demandé au moteur
  long temps =0;          //Durée de rotation pour un tour
  //************************************************************
  // Pour un moteur de ce type : http://tiptopboards.com/151-moteur-pas-%C3%A0-pas-r%C3%A9duct%C3%A9-de-5v-4-fils-driver-.html
  // 64 pas par tour, 4 phases, angle de 5.625° selon les spécifications du moteur
  // Démultiplication 1:64 pour ce moteur réducté mécaniquement
  //   360° / 5.625° * 64 = 4096 angles avec la démultiplication 
  //   360° / 5.625° * 64  * 4 bobines / 2 bipolaire = 2048 step / tour
  
  // Brancher +V -> 5V et GND
  // Sortie analogique du capteur -> A0 arduino
  // Sortie digitale du capteur -> A1 (avec seuil)

  int photocellPin = 0; // the cell and 10K pulldown are connected to a0
  int photocellReading; // the analog reading from the analog resistor divider

  
void setup() 
 {                
  Serial.begin(9600);     // 9600 bps
  Serial.println("Test de moteur pas a pas");
  pinMode(photocellPin, INPUT);       //pin A0 en entrée analogique
  pinMode(photocellReading, INPUT);  //pin 3 en entrée numérique  
  }

void loop() 
  {

  photocellReading = analogRead(photocellPin);
  Serial.print("Analog reading = ");
  Serial.print(photocellReading); // the raw analog reading
  // We'll have a few threshholds, qualitatively determined
  if (photocellReading < 700) {
    Serial.println(" - Noir");
    
  Serial.println("Moteur en marche ");  
  //Faire tourner le moteur
  small_stepper.setSpeed(100); //Vitesse de 300 (max) réduire ce chiffre pour un mouvement plus lent
  //100 permet d'avoir un couple élevé >300 le moteur vibre sans tourner
  
  Steps2Take  = 1024;  // Une demie rotation complète avec 1024 pas (1 tour environ 4.5sec)
  //Pour tourner à l'envers de 6 fois 1/30eme de tour, simplement multiplier Steps2Take par 6/30 et mettre un moins pour inverser le sens
  // Exemple  Steps2Take  = -6*2048/30;
  temps = millis();
  small_stepper.step(Steps2Take);  //Ca tourne
  temps =  millis()- temps ;  //Chronomètre un tour complet  6.236 sec par tour à vitesse 200
  Serial.println(temps);      //Affiche le temps (en ms) pour un tour complet
  delay(2000);  //pause
 }
else {
    Serial.println(" - jour");
    delay(2000);
    
  Steps2Take  = -1024;  // Une demie rotation complète avec 1024 pas (1 tour environ 4.5sec)
  //Pour tourner à l'envers de 6 fois 1/30eme de tour, simplement multiplier Steps2Take par 6/30 et mettre un moins pour inverser le sens
  // Exemple  Steps2Take  = -6*2048/30;
  temps = millis();
  small_stepper.step(Steps2Take);  //Ca tourne
  temps =  millis()- temps ;  //Chronomètre un tour complet  6.236 sec par tour à vitesse 200
  Serial.println(temps);      //Affiche le temps (en ms) pour un tour complet
  delay(2000);  //pause
 }
  }

bonjour,
as tu essayé de lire simplement la ldr dans un code simple?

en plus, tu mets la valeur de lecture en INPUT alors que c'est une variable simple

const byte photocellPin = A0;
int photocellReading = 0;

void setup() 
 {                
  Serial.begin(9600);     // 9600 bps
  Serial.println("Test de moteur pas a pas");
  pinMode(photocellPin, INPUT);      
  }

void loop() 
  {

  photocellReading = analogRead(photocellPin);
  Serial.print("Analog reading = ");
  Serial.print(photocellReading);
}

Bonjour,

Il suffit de mettre un flag (bool) pour indiquer si les portes sont ouvertes ou fermées et de ne pas les ouvrir si elles sont déjà ouvertes et inversement.

Il faut que les valeurs de luminosité pour l'ouverture et la fermeture soient différentes (hystérésis) autrement quand tu seras autour de la valeur, les portes n'arrêteront pas de s’ouvrir et se fermer.

Enfin
Mets ton code entre balises. C'est chi pénible d'avoir à télécharger le code pour y jeter un coup d'oeil.

Bonjour, j'ai mis le code entre balises comme tu me l'indiquais. Sinon je n'y connais rien en Arduino, donc je ne comprends pas grand chose à cette histoire de balise et même le mot hystérésis n'évoque rien pour moi. C'est pas gagné pour mon projet.