Étape 4: GPS UTC (temps) à la conversion de l’heure locale
Le sketch Arduino entière est attaché. Laissez-moi vous expliquer comment j’ai programmé pour convertir l’UTC en heure locale ci-dessous est une partie de la boucle principale.Si (gpsYear %4 == 0) DaysAMonth [1] = 29 ; vérification de l’année bissextile
Si c’est les années bissextiles, ajouter un jour au nombre de jours de février. Effectivement l’année bissextile n'est pas simplement tous les 4 ans mais il n’y a plus de conditions mais pour 10 à 20 prochaines années ça ne m’arrivera et nous pouvons simplement calculer tous les 4 ans.
Réglage des fuseaux horaires
gpsHour += fuseau horaire ;
Fuseau horaire est une constante définie au début du programme. Vous devez modifier ce nombre selon l’endroit où vous habitez.
Réglage de DST
Si (gpsMonth * 100 + gpsDay > = DSTbegin [gpsYear-13] & &
gpsMonth * 100 + gpsDay < DSTend[gpsYear-13]) gpsHour += 1 ;
J’ai ajouté un tableau DST (heure d’été) dans un tableau, la date de début et date fin. Si la date actuelle est moins cette gamme, ajouter 1 heure.
La section ci-dessous est de corriger l’heure et la date après l’ajustement de fuseau horaire. Par exemple, si l’heure ajustée est inférieur à 0 ou supérieure à 24, vous devrez ajuster la journée aussi. Par conséquent, vous devez régler le mois et l’année, trop.
Si (gpsHour < 0)
{
gpsHour += 24 ;
gpsDay-= 1 ;
Si (gpsDay < 1)
{
Si (gpsMonth == 1)
{
gpsMonth = 12 ;
gpsYear-= 1 ;
}
d’autre
{
gpsMonth-= 1 ;
}
gpsDay = DaysAMonth [gpsMonth-1] ;
}
}
Si (gpsHour > = 24)
{
gpsHour-= 24 ;
gpsDay += 1 ;
Si (gpsDay > DaysAMonth[gpsMonth-1])
{
gpsDay = 1 ;
gpsMonth += 1 ;
Si (gpsMonth > 12) gpsYear += 1 ;
}
}
C’est tout pour ce instructable. Espérons que cela aide quelqu'un qui veut convertir l’heure GPS à l’heure locale.
Merci pour la lecture.