badly need help on this one
You need an extra variable that keeps track if the light is on or off.
bool lights;      // true when lights are on, false if lights are off.
void loop()
{
  ...
  if(!lights and Hour == 18)      // 6 p.m. and lights are not on ?
  {
    digitalWrite(LED, HIGH);      // turn light on
    lights = true;                // remember that the lights are on
  } 
  else if(lights and Hour == 6)   // lights are on and it is 6 a.m. ?
  {
    digitalWrite(LED, LOW);
    lights = false;
  }
  ...
}   
              
              
              1 Like
            
            
          In your case, you don't need to know the minutes value.
You can avoid handling the crossover at midnight by looking when the light should be off - i.e if hours > 5 and hours < 18.
And rather than constant digitalWrites, use the idea suggested above.
              
              
              1 Like
            
            
          An extra boolean isn't need. The output pin state is the same as the boolean.
The state of the pin change once between 6 and 18 and once outside that time
  if(Hour >= 6 && Hour <= 18){
    if(digitalRead(LED)){
      digitalWrite(LED, LOW);
    }    
  }
  else if(!digitalRead(LED)){
    digitalWrite(LED, HIGH);
  }
Hour == 6 and Hour == 18
Is tricky code. If the application starts at 19h it does nothing for the whole night.
              
              
              1 Like
            
            
          i tried this one and it worked, thank you so muuuuuch
              
              
              1 Like
            
            
          This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.