Beste mensen, Ik ben bezig met een project om mijn zonnescherm automatisch te laten werken doormiddel van het toevoegen van een regensensor en ldr. Doordat de regensensor niet goed is heb ik deze even weggelaten. Het gaat mij nu om de ldr. Ik wil graag dat de ldr om de 10 minuten opnieuw wordt uitgelezen met analogread. Weet iemand hoe ik dit kan realiseren? Dus ik wil dat om de 10 minuten analogread opnieuw wordt gedaan in het programma zodat het zonnescherm niet om de paar miliseconde schakelt door een 'wolkje'ofzoiets.


int ldrValue = 0; // variable to store the value coming from the sensor
int rainValue = 0; //variable to store the value coming from the sensor
int ldrPin = A1; // select the input pin for LDR 
int rainPin = A0; //select the input pint for Rainsensor
int zonneschermState;
int relaisOmlaagState;
long timeStampStartOmlaag;
int relaisOmhoogState;
long timeStampStartOmhoog;
//code voor status relais(relais hebben 2 ints).
int IN_ACTIVE = 0;
int ACTIVE_AAN = 1;
int ACTIVE_UIT = 2;
// code voor status zonneschermstate
int ONBEKEND = 0;
int OMLAAG = 1;
int OMHOOG = 2;
int ldrstatus;


int PIN_RELAIS_OMHOOG = 9; //select the output pin for the power switch (UP)
int PIN_RELAIS_OMLAAG = 10; //select the output pin for the power switch (DOWN)
unsigned long previousTime = 0; //begintijd van crystal


void setup() {
Serial.begin(9600); //sets serial port for communication
pinMode(ldrPin, INPUT); //select input pin as INPUT
pinMode(rainPin, INPUT); //select input pin as INPUT
pinMode(PIN_RELAIS_OMHOOG, OUTPUT); //select output pin as OUTPUT
pinMode(PIN_RELAIS_OMLAAG, OUTPUT); //select output pin as OUTPUT
zonneschermState = ONBEKEND; //status zonnescherm is nu onbekend
relaisOmlaagState = IN_ACTIVE; //omlaagrelais is nu niet actief
timeStampStartOmlaag = 0; //timestamp starten voor het omlaagrelais
relaisOmhoogState = IN_ACTIVE; //omhoogrelais is nu niet actief
timeStampStartOmhoog = 0; //timestamp starten voor het omhoogrelais
}

void loop() {
  
long ms;
int gewensteSchermState;
ms = millis();
previousTime = millis();
gewensteSchermState = zonneschermState;
ldrstatus = analogRead(ldrPin);
//if ((ldrValue > 700) && (rainValue > 500)){
if (ldrstatus > 900){
gewensteSchermState = OMLAAG;
Serial.println("zonnescherm omlaag, veel licht");
}

//if (rainValue <500) {
//gewensteSchermState = OMHOOG;
//Serial.println("zonnescherm omhoog, regen");
//} 

if (ldrstatus < 400){
gewensteSchermState = OMHOOG;
Serial.println("zonnescherm omhoog, te weinig licht");
} 

if(gewensteSchermState == OMLAAG)
{ 
//Het scherm moet omlaag, controleer en reset de state van het omhoog relais
  if(relaisOmhoogState != IN_ACTIVE)
  {
  if(relaisOmhoogState == ACTIVE_AAN)
  {
  digitalWrite(PIN_RELAIS_OMHOOG, LOW);
  timeStampStartOmhoog = 0;
}
 relaisOmhoogState = IN_ACTIVE;
  }

   if(relaisOmlaagState == IN_ACTIVE)
      {
        relaisOmlaagState = ACTIVE_AAN;

        timeStampStartOmlaag = ms;
        digitalWrite(PIN_RELAIS_OMLAAG, HIGH);
      }

 else if(relaisOmlaagState == ACTIVE_AAN && ((ms - timeStampStartOmlaag))>1000)
      {
        relaisOmlaagState = ACTIVE_UIT;
        digitalWrite(PIN_RELAIS_OMLAAG, LOW);
      }
} //nu gaat het scherm omlaag, de max timing van de druk op de schakelaar moet nog wel worden gewijzigd

 if(gewensteSchermState == OMHOOG)
    {
      // Het scherm moet omhoog, controleer en reset de state van het omlaag relais
      if(relaisOmlaagState != IN_ACTIVE)
      {
        // Check of het relais omlaag niet bekrachtigd wordt -> zo ja, eerst ontkrachten!!
        if(relaisOmlaagState == ACTIVE_AAN)
        {
          digitalWrite(PIN_RELAIS_OMLAAG,LOW);
          timeStampStartOmlaag = 0;
        }
        relaisOmlaagState = IN_ACTIVE;
      }

      if(relaisOmhoogState == IN_ACTIVE)
      {
        relaisOmhoogState = ACTIVE_AAN;

        timeStampStartOmhoog = ms;
        digitalWrite(PIN_RELAIS_OMHOOG, HIGH);
      }
      else if(relaisOmhoogState == ACTIVE_AAN && ((ms - timeStampStartOmhoog))>1000)
      {
        relaisOmhoogState = ACTIVE_UIT;

        digitalWrite(PIN_RELAIS_OMHOOG, LOW);
      }
    }
}