Ich habe mir dazu diese Funktion erstellt.
Die Arbeitet mit der Time.h zusammen.
Siehe:
http://www.pjrc.com/teensy/td_libs_TimeAlarms.html
Und mein Beispiel...
Gerade geschrieben, scheint aber zu funktionieren...
#include <Time.h>
unsigned int starthour=7;
unsigned int startminute=15;
unsigned int endhour=23;
unsigned int endminute=10;
void setup()
{
Serial.begin(9600);
setTime(23,9,30,1,1,11); // set time
}
void loop(){
digitalClockDisplay();
Serial.println(inTIME(&starthour,&startminute,&endhour,&endminute));
delay(1000); // wait one second between clock display
}
void digitalClockDisplay()
{
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.println();
}
void printDigits(int digits)
{
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
// inTIME
boolean inTIME(unsigned int *starthour, unsigned int *startminute, unsigned int *endhour, unsigned int *endminute){
unsigned long nowtimesecond = (unsigned long)hour() * 3600 + (unsigned long)minute() * 60 + (unsigned long)second();
unsigned long starttimesecond = (unsigned long)*starthour * 3600 + (unsigned long)*startminute * 60;
unsigned long endtimesecond = (unsigned long)*endhour * 3600 + (unsigned long)*endminute * 60;
if(starttimesecond < endtimesecond){ // bsp. 6-13 Uhr
if(starttimesecond < nowtimesecond && nowtimesecond < endtimesecond) return true; // startzeit < aktuelle zeit < endzeit
}
else if(starttimesecond > endtimesecond){ // bsp. 22-6 Uhr
if(starttimesecond < nowtimesecond) return true; // bsp. startzeit 22 Uhr und aktuell ist 23 Uhr
else if(nowtimesecond < endtimesecond) return true; // bsp. startzeit 22 Uhr und aktuell ist 2 Uhr
}
// alles andere ist false
return false;
}
// ENDE inTIME