Stap 4: GPS tijd (UTC) naar lokale tijd conversie
De gehele schets van de Arduino is aangesloten. Laat me uitleggen hoe ik geprogrammeerd om te converteren van de UTC naar lokale tijd hieronder die een deel uitmaakt van de hoofdlus.Als (gpsYear %4 == 0) DaysAMonth [1] = 29; schrikkeljaar selectievakje
Als het een schrikkeljaar, toevoegen een dag aan het aantal dagen van februari. Eigenlijk het schrikkeljaar is niet eenvoudig om de 4 jaar maar er zijn meer voorwaarden maar voor de komende 10-20 jaar het zal niet gebeuren en kunnen we eenvoudig berekenen het elke 4 jaar.
Tijdzone aanpassing
gpsHour += TimeZone;
Uurzonee is een constante die is gedefinieerd in het begin van het programma. U wilt veranderen dit nummer volgens waar u woont.
DST correctie
Als (gpsMonth * 100 + gpsDay > DSTbegin [gpsYear-13] = & &
gpsMonth * 100 + gpsDay < DSTend[gpsYear-13]) gpsHour += 1;
Ik voegde een DST (zomertijd) tabel in een matrix, de begindatum en einddatum. Als huidige datum binnen dit bereik is, toevoegen van 1 uur.
De sectie hieronder is te corrigeren van de tijd en datum na de aanpassing van de tijdzone. Bijvoorbeeld als de gecorrigeerde uur kleiner dan 0 of groter is dan 24 is, moet u de dag ook aanpassen. Zo moet u aanpassen maand en het jaar, ook.
Als (gpsHour < 0)
{
gpsHour += 24;
gpsDay-= 1;
Als (gpsDay < 1)
{
Als (gpsMonth == 1)
{
gpsMonth = 12;
gpsYear-= 1;
}
anders
{
gpsMonth-= 1;
}
gpsDay = DaysAMonth [gpsMonth-1];
}
}
Als (gpsHour > = 24)
{
gpsHour-= 24;
gpsDay += 1;
Als (gpsDay > DaysAMonth[gpsMonth-1])
{
gpsDay = 1;
gpsMonth += 1;
Als (gpsMonth > 12) gpsYear += 1;
}
}
Dat is alles voor dit instructable. Hoop dat zulks steun iemand wie desiderata voor GPS tijd converteren naar lokale tijd.
Bedankt voor het lezen.