Hi,
ich hole den Therad mal wieder raus, weil ich gerade an dem gleichen Thema sitze. Ich habe 12 Relais zu schalten.
Meine Einschaltzeiten sind in den Arrys
Anminuten und
Anstunden im EEPROM gespeichert. Beim Start des Artuino wird der EEPROM ausgelesen und in die o.g. Variablen geschrieben.
Bislang habe ich folgende Funktion dazu gebaut.
void Alarmpruefen ()
{
time_t AktuelleUhrzeit = now(); // Uhrzeit auslesen
AktuelleStunde = hour(AktuelleUhrzeit); // Stunde davon ermitteln
AktuelleMinute = minute(AktuelleUhrzeit); // Minute ermitttteln
if(Anstunde[2] == AktuelleStunde && Anminute[2] == AktuelleMinute)
{digitalWrite(TagLicht1Pin,LOW);}
if (Ausstunde[2] == AktuelleStunde && Ausminute[2] == AktuelleMinute)
{digitalWrite(TagLicht1Pin,HIGH);}
}
Der funktioniert soweit ganz gut. Ich bin mir nur nicht sicher ob ich eine Bedingung vergessen habe und ob es wirklich der beste Weg ist.
Die Uhr soll einmal am Tag anschalten und einmal aus. Das Uhrsignal kommt vom RTC 1307.
Gegen die Time.Alarms habe ich mich entschieden, da es zu seltsamen Erscheinungen mit dem Alarm.delay gab. Es hat meinen sonstigen Programm Ablauf (Displaymenü mit Möglichkeiten zu Settings und Save Settings je Kanal) gestört.
Bitte gebt mir einen Tipp wie ich es richtig mache. Wenn ich das beispiel oben anwenden wollen würde, dann müsste ich auch eine Alarmzeiten in eine long-Variable umwandeln oder?