Zomer-wintertijd instellen

Arduino specifieke Software
Berichten: 2
Geregistreerd: 30 Okt 2020, 13:37
Woonplaats: Groningen

Re: Zomer-wintertijd instellen

Berichtdoor toho » 30 Okt 2020, 16:13

Hallo allen, we zijn inmiddels een jaar verder dan het laatste bericht, maar ik wil jullie toch mijn geknutsel niet onthouden.
Ik heb een Mengenlehruhr gemaakt en wilde die ook voorzien van automatische omschakeling van zomer naar wintertijd en omgekeerd.
Uitgangspunten:
- De tijd stel ik handmatig in bij met het voorbeeld in de library van de DS3231, (DS3231_set.ino)
- Om de omschakeltijd te bepalen ben ik uit gegaan van een paar vast regels: t.w. De dag moet groter of gelijk zijn aan 25.
- de weekdag moet 7 zijn. (zondag)
- Voor de omschakeling naar zomertijd moet de tijd 02:00:00 uur zijn. Voor de wintertijd 03:00:00. Na de omschakeling wordt er een "vlag"gezet die aangeeft of we in zomertijd of wintertijd zitten.
Hieronder het deel van de schets.

if( Maand == 3 && Datum >= 25 && Weekdag == 7 && Uur == 2 && Zomertijd == 0)
{
Clock.setHour(Uur+1);
Zomertijd = 1;
}

if( Maand == 10 && Datum >= 25 && Weekdag == 7 && Uur == 3 && Zomertijd == 1)
{
Clock.setHour(Uur-1);
Zomertijd = 0;
}

Om er voor te zorgen, dat bij tussentijds opstarten, na bijv. tijd bijzetten, de "vlag"juist gezet wordt, heb ik in de setup de volgende regels opgenomen.

Datum = Clock.getDate();
Maand = Clock.getMonth(Century);
}
if ((Maand*1000)+(Datum*100) >= 5500 && (Maand*1000)+(Datum*100) <= 12500 )
{
Zomertijd = 1;
}
else
{
Zomertijd = 0;
}

Om het eenvoudig te houden ga ik er, in dit geval, vanuit dat de zomertijd loopt van 25 maart (5500) tot en met 25 oktober (12500).
Je ziet, dat met weinig regels toch geschakeld kan worden tussen zomer- en wintertijd. Voor zolang het nog duurt.
Het jaartal is hier niet relevant, want er wordt gekeken naar de eerste zondag op of na de 25e.
Groet
Ton

Advertisement

Berichten: 2
Geregistreerd: 30 Okt 2020, 13:37
Woonplaats: Groningen

Re: Zomer-wintertijd instellen

Berichtdoor toho » 01 Nov 2020, 09:33

Rectificatie:
Ik was in de war met de europese weekdag telling, waarbij maandag dat 1 is.
In de amerikaanse dagtelling is de zondag dag 1.

Hieronder het deel van de aangepaste schets.

if( Maand == 3 && Datum >= 25 && Weekdag == 1 && Uur == 2 && Zomertijd == 0)
{
Clock.setHour(Uur+1);
Zomertijd = 1;
}

if( Maand == 10 && Datum >= 25 && Weekdag == 1 && Uur == 3 && Zomertijd == 1)
{
Clock.setHour(Uur-1);
Zomertijd = 0;
}

Groet
Ton

Vorige

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 111 gasten