
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> Hallo, > > mir persönlich sind Tabellen unsymphatisch, da sie zu Speicherfresser ausarten können (2 byte pro Eintrag). Eine andere Möglichkeit besteht in der Verwendung von ein paar Formeln. Das nachfolgende Programmbeispiel konnte ich nicht testen, der 31.März ist noch so weit... Ich habe es aber mit verschiedenen Daten nachgerechnet. Theoretisch funktioniert es. Nun zur Funktion: Pro Tag nimmt die Beleuchtungszeit von Okt. bis Dez 2 min ab und von Jan. bis März 2 min wieder zu (jeweils 1 min früh und 1 min abends). Am 31.12. ist die Beleuchtungszeit 182 min kürzer. Soweit ich erkennen kann, treten drei Fehler auf, die man aber vernachlässigen kann: > - der 31.10. und der 01.11. sind gleich lang > - der 31.01. und der 01.02. sind gleich lang > - der 01.03. ist plötzlich 6 min länger als der 28.02 > Die Ursache der Fehler ist die unterschiedliche Anzahl der Tage der Monate. > > Gruß Mario > > Programmbeispiel: > > > define licht port[1] > > define Zeit word > define kuerzer byte > > define LichtEin 730 ' Einschaltzeit im Format hhmm > define LichtAus 2130 ' Ausschaltzeit im Format hhmm > > #loop > ' > ' weiterer Programmcode > ' > if second = 59 then goto weiter ' Vermeidung evtl. Fehlschaltungen bei Minuten- bzw. Stundenwechsel > if month > 3 or month < 10 then kuerzer = 0 ' Apr. bis Sept. - keine Änderung > if month >= 10 then kuerzer = (month - 10) * 30 + day ' Okt. bis Dez. - Tage werden "kürzer" > if month <= 3 then kuerzer = (4 - month) * 30 + 1 - day ' Jan. bis März - Tage werden wieder "länger" > Zeit = hour * 60 + minute > if Zeit >= LichtAus / 100 * 60 + LichtAus mod 100 - kuerzer then goto aus > if Zeit >= LichtEin / 100 * 60 + LichtEin mod 100 + kuerzer then goto ein > #aus > licht = off > goto weiter > #ein > licht = ein > #weiter > ' > ' weiterer Programmcode > ' > goto loop na das klingt doch super, werde ich gleich mal testen. Vielen Dank schon mal. MfG Peter |
| Antwort schreiben |