Zeitschaltuhr

Gast #2302822
Lesenswert?

Hallo Forum !

ich Bastle mir gerade mit einem Mega8 und DS1307 eine Zeitschaltuhr für 
meine Fische :)

Das mit einschalten und ausschalten funktioniert soweit super! Aber ich 
hab das Problem dass die Software nur zur exakten Zeit schaltet 
(06:00:00) . Wie kann ich es machen das auch zwischen der Zeit 
geschaltet wird --> 6Uhr ein  14Uhr , wenn das Gerät mit Strom versorgt 
wird soll es berechnen können das es zwischen der Zeit ist und 
einschalten muss.  Kann man die Zeit auf eine Gesamtsumme berechnen so 
wie Excel ? Wie berechnet Excel das?


danke!
Gast #2302846
Lesenswert?

ich möchte gerne das die Software erkennt (nach Stromausfall) dass die 
Zeit(aktuell) in der Prog.Zeit (Von-Bis) ist und auch einschaltet. Nicht 
nur an fixen Punkten/Zeiten

so hab ich es jetzt-->

//Einschalten
if (time_hh==0x06 && time_mm==0x00 && time_ss==0x00)
    {licht==1;}

//Ausschalten
if (time_hh==0x08 && time_mm==0x00 && time_ss==0x00)
    {licht==0;}
#2302883
Lesenswert?

Gary schrieb:
> ich möchte gerne das die Software erkennt (nach Stromausfall) dass die
> Zeit(aktuell) in der Prog.Zeit (Von-Bis) ist und auch einschaltet. Nicht
> nur an fixen Punkten/Zeiten

Wenn die aktuelle Uhrzeit hinter der Einschaltzeit liegt, aber vor der 
Ausschaltzeit, soll deine Lampe brennen.

>
> so hab ich es jetzt-->
>
> //Einschalten
> if (time_hh==0x06 && time_mm==0x00 && time_ss==0x00)
>     {licht==1;}

damit fragst du ab, ob ein Zeitpunkt vorliegt.
Du willst aber wissen, ob die aktuelle Zeit GRÖSSER/GLEICH als die 
Einschaltzeit und KLEINER/GLEICH als die Ausschaltzeit ist. Denn du 
willst wissen, ob die gerade aktuelle Uhrzeit im Zeitintervall liegt in 
dem definitionsgemäss deine Aquariumbeleuchtung brennen soll.

Hinweis: Das ganze vereinfacht sich, wenn man nicht in Stunden und 
Minuten rechnet, sondern in Minuten seit Mitternacht. Dann hat man 
einfach ein paar Zahlenwerte, die man einfach vergleichen kann und muss 
nicht auf Stunden/Minuten Sonderfälle abfragen. Und die Sekunden kann 
man wohl getrost ignorieren.


Machst du doch im realen Leben auch nicht anders.
Wenn es heißt: Du mußt zwischen 9:35 und 14:28 deine Mittagspause nehmen 
und es ist nach einem Blick auf die Uhr 11:28, kannst du dann deine 
Mittagspause nehmen?
Ja, kannst du. Denn 11 Uhr ist größer als 9 Uhr und kleiner als 14 Uhr.
Also liegst die aktuelle Zeit im zugelassenen Intervall. In deinem Fall 
brennen dann eben die Lampen.

Etwas weniger auf Excel schielen und dafür lieber nach Beispielen 
suchen, wie du selbst genau die gleiche Aufgabenstellung jeden Tag mit 
links meisterst. Dann dabei beobachten (oder darüber nachdenken) was 
genau du in so einem Fall dann eigentlich machst. Du wirst erstaunt 
sein, wieviele Programmier-'Probleme' du jeden Tag ohne darüber 
nachzudenken aus dem Handgelenk heraus löst, die, wenn du sie als 
Programmierproblem bekommst, dich vor scheinbar unüberwindliche Probleme 
stellen.
Gast #2302901
Lesenswert?

Leg eine sortierte Liste der Schaltpunkte an,
verwende am besten Integer bestehend aus
Stunden * 256 + Minuten  (geht so als Union)
und dem Schaltzustand der danach bestehen soll
(Licht ein/aus).

Dort suchst du dann nach dem Start deinen gültigen
Startwert (der nächste Integerwert ist größer als
die aktuelle Uhrzeit -> dein nächster Schaltpunkt).
Dann weist du auch was du schalten must.

hans

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren