habe ein kleines problem mit einer zeitschalt-funktion.
irgendwie geht mir das nicht in den kopf ! das licht schaltet wilkürlich
wenn die zeit über 23.59 leuft also 0 uhr.
danke
int light_start_hours = 10;
int light_start_minutes = 30;
int light_stop_hours = 4;
int light_stop_minutes = 30;
int light_start;
light_start = light_start_hours * 100 + light_start_minutes;
int light_stop;
light_stop = light_stop_hours * 100 + light_stop_minutes;
int current_time;
current_time = hours * 100 + minutes;
if (current_time >= light_start || current_time <= light_stop) {digitalWrite(licht1_2, HIGH);} else {digitalWrite(licht1_2, LOW);}
Ich habe immer geglaubt, daß die Miliärs in den USA (zumindest in den Silmen über Militär) die Stunden und Minuten im Format:
Stunde hundert - Minuten im 24 Stunden Format (ohne Doppelpunkt oder Zusatz der Wörter Minuten oder Stunden) benutzen, also
19 Uhr dreißig ist 1930 (zulu - Time) verwenden.
Ich hatte es nicht so verstanden, daß die Stunde darum nicht 60 sondern 100 Minuten haben.
Ich kann sagen, daß bei meinem Militärdienst in Italien dieses Zeitformat nicht verwendet wurde.
Ich weiß nicht woher Du die Zeit bekommst. Wenn von einer RTC oder GPS, RDS, DCF77 haben die Stunden 60 Minuten.
Wenn die Stunden 60 Minuten haben und Du mit 100 Minuten rechnest ohne umzurechnen ( 30 min = 50) nehmen die Minuten nie die Werte von 60 bis 99 an.
bekomme die zeit via RTC im 24 h format.
also stundenausgabe = 0 - 23.
minutenausgabe 0 - 59.
meine rechnung.
z.b stunden 13, minuten 40
stunden * 100 + minuten = 1340
das problem ist jetzt aber das ich die zeit zwischen z.b 1300 und 0400 schalten will, und mit diesem satz komme ich nicht weiter.
if (1800 >= 1400 || 1800 <= 0400) {digitalWrite(licht1_2, HIGH);} else {digitalWrite(licht1_2, LOW);}
hier ist der haken 1800 <= 0400 !! wie lös ich das weil ja de zeit nach 2359 wieder kleiner als 1800 also 0000 ist.
Wenn Du noch kontrollierst ob das Licht aus oder an ist, brauchst Du den Ausgang nur 1 mal setzen.
Dieser Kode schaltet das Licht jeden Tag ein und aus.
Jetzt zu meinem penetranten wiederholen:
Sagen wir die Startzeit ist 19:40 und die Einschaltdauer 1Stunde 30 Minuten.
Das ergibt mit Deiner rechenweise eine Startzeit 1940 und eine Stopzeit 2070. Der obengenannte Kode funktioniert; Wenn Du aber (jetzt == ende) schreibst Schaltet sich das licht nie aus da die Zeit bis 2059 kommt und dann bei 2100 weiterläuft.
Benutze wie alle Normalsterblichen eine 60-Minuten-Stunde, wandle Zähle die Zeit in Minuten und alles funktioniert besser.