GPS-tid (UTC) till lokal tid konvertering genom att använda Arduino (4 / 4 steg)
Steg 4: GPS-tid (UTC) till lokal tid konvertering
Den hela Arduino skissen bifogas. Låt mig förklara hur jag programmerade för att konvertera UTC till lokal tid nedan som är en del av de viktigaste loopen.om (gpsYear %4 == 0) DaysAMonth [1] = 29. skottår check
Om det är skottår, lägga till en dag i antalet dagar i februari. Faktiskt skottår är inte bara var 4 år men det finns fler villkor men 10-20 år det brukar hända och vi kan enkelt beräkna det var 4 år.
Tidszon justering
gpsHour += TimeZone;
TimeZone är en konstant som definieras i början av programmet. Du måste ändra detta nummer enligt där du bor.
DST justering
om (gpsMonth * 100 + gpsDay > = DSTbegin [gpsYear-13] & &
gpsMonth * 100 + gpsDay < DSTend[gpsYear-13]) + gpsHour = 1;
Jag la en DST (sommartid) tabell i en matris, start- och slutdatum. Om dagens datum är inom detta spänna, Lägg till 1 timme.
Avsnittet nedan är att korrigera tid och datum efter justeringen timezone. Till exempel om den justerade timmen är mindre än 0 eller större än 24, måste du justera dagen också. Som sådan, måste du justera månad och år, alltför.
om (gpsHour < 0)
{
gpsHour += 24.
gpsDay-= 1;
om (gpsDay < 1)
{
om (gpsMonth == 1)
{
gpsMonth = 12;
gpsYear-= 1;
}
annat
{
gpsMonth-= 1;
}
gpsDay = DaysAMonth [gpsMonth-1].
}
}
om (gpsHour > = 24)
{
gpsHour-= 24.
gpsDay + = 1;
om (gpsDay > DaysAMonth[gpsMonth-1])
{
gpsDay = 1;
gpsMonth + = 1;
om (gpsMonth > 12) + gpsYear = 1;
}
}
Det är allt för detta instructable. Hoppas detta hjälper någon som vill konvertera GPS-tiden till lokal tid.
Tack för läsning.