RTC Zeitschaltuhr von/bis

Ich bin gerade dabei für mein Aquarium eine Automatisierung zu machen.

Leider klappt das nicht so ganz wie ich mir das vorstelle mit der RTC und den Timern.

Ich habe schon Beispiele gesehen, in denen genau um X-Uhr geschalten wird, ich will jedoch im Falle eines Stromausfalls nicht den Timer laufen lassen bis zum nächsten Event, da ich auch CO2 steuern will und nachts dadurch eine Unterversorgung an Sauerstoff ist falls CO2 weiter läuft.

Meine Idee ist die Uhrzeit (hhmm) als von/bis zu erfassen und bei einem inaktiven Pin diesen dann aktiv zu schalten oder eben zu deaktivieren. z.B. wird aus 7:30Uhr 730, ich habe eine Funktion (TimerCheck) in welcher ich den Timer einfach mit if/else prüfe -->if((uhrzeit()>=Timer_1 and uhrzeit()<Timer_2) or (uhrzeit()>=Timer_3 and uhrzeit()<Timer_4))
Ein Timer für einen Tag hat zwei Einschalt- und Ausschaltzeiten, über Mittags wird eine Sonnenpause gemacht :slight_smile:

Das einschalten klappt super, allerdings wird das ausschalten verpennt, wenn ich den Reset Button drücke und der Arduino neu startet reagiert er und schaltet den Port dann aus.

Ein weiteres Problem ist, dass sich das Display nach ein paar Minuten verabschiedet, es friert ein bis ich Reset drücke. Am Display kann es eigentlich nicht liegen, wenn ich die Beispiel Scripts laufen lasse läuft es einwandfrei selbst über mehrere Tage. Ich steuer das Display mit 3.3V an und hab auch einen LogicShifter dazwischen.

Leider ist der Code ein wenig zu lange, deswegen als Anlage.

Code.txt (10 KB)

int Timer_1[4]; // Timer Lampe 1
int Timer_2[4]; // Timer Lampe 2
int Timer_3[4]; // Timer Lampe 3
int Timer_4[4]; // Timer CO2
    Timer_1[0] = 1000;
    Timer_1[1] = 1400;
    Timer_1[3] = 1600;
    Timer_1[4] = 2100;

Timer_1[4] darf es nicht geben, maximal Timer_1[3]! Das gilt analog für die anderen Timer-Variablen.

Danke, hab es total übersehen.