Sujet : servomoteur et ldr

Bonjour,
j'ai conçu une porte de poulailler automatique, qui s'ouvre et se ferme en fonction de la luminosité (jour ou nuit). La porte est actionnée par un servomoteur.
Mais quand le programme a détecté qu'il fait nuit, il ferme la pore, il attend une demi heure et revérifie, et c'est la où ce situe mon problème, le programme tourne en boucle et demande à chaque fois si il fait nuit, et comme c'est vrai pendant des dizaines d'heures, le servomoteur va avancer même quand la porte est déjà fermé, au risque de détruire le système.
Voici mon code :

#include <Servo.h>

Servo myservo;

const int ldr = 0; //ldr au pin analog 0
int valLdr = 0; // valeur de la resistance de la ldr entre 0 et 1024

void setup()
{
pinMode(ldr, INPUT);
}
void loop()
{
valLdr = analogRead(ldr);

if (valLdr >= //mettre ici la valeur d'obscurité téstée, entre 0 et 1024)
{
myservo.attach(2); //myservo est sur le pin 2 de l'arduino
myservo.writeMicroseconds(1700); //recul...
delay(1020); //...pendant 1.02 secondes
myservo.detach();

}
else if (valLdr <= //metre ici la valeur de luminosité téstée, entre 0 et 1024)
{
myservo.attach(2); //myservo est sur le pin 2 de l'arduino
myservo.writeMicroseconds(1300); // avance...
delay(1020); //...pendant 1.02 secondes
myservo.detach();
}
delay(1800000); //attendre une demi heure
}