Étape 8: Standard vs Daylight Savings Time
Tout d’abord, nous devons lire un commutateur pour déterminer le format, puis nous avons besoin passer un code basé sur les résultats de cette lecture.
Nous utiliserons broche 6 pour l’interrupteur, comme le bouclier Ethernet lui-même utilise broches 4, 10, 11, 12 et 13.
Connecter un commutateur entre les broches 6 et sol. Vous n’avez pas besoin une résistance pullup, car nous allons utiliser celui intégré à l’arduino à l’aide de la commande INPUT_PULLUP.
Pour ce faire, vous devez réinitialiser ou cycle d’alimentation votre Arduino entre changements, comme le code de commutateur n’est pas en boucle Sub.
Voici le code affecté dans son état actuel :
/ * Mettre sur le décalage (en secondes) à votre heure locale
Cet exemple est GMT - 4 * /
const long timeZoneOffset =-14400 L ;
Remplacez / * mettre sur le décalage (en secondes) à votre heure locale
Cet exemple est GMT - 4 * /
timeZoneOffset long ;
ajouter ceci avant installation Sub :
Commutateur de DST
int dstPin = 6 ; connecté à la broche numérique 5
int dstVal = 0 ; variable pour stocker la valeur lue
et changer la fonction int entier de getTimeAndDate() avec le code ci-dessous :
Ne modifiez pas cette fonction, il est utilisé par le système
int getTimeAndDate() {}
Touche "time zone"
pinMode (dstPin, INPUT_PULLUP) ; définit la broche numérique 6 en entrée et active les tirer vers le haut la résistance
dstVal = digitalRead(dstPin) ; lire l’entrée pin
Si (dstVal == 1) {}
timeZoneOffset =-14400 L ;
} else {}
timeZoneOffset =-18000 L ;
}
drapeau de l’int = 0 ;
UDP.Begin(localPort) ;
sendNTPpacket(timeServer) ;
Delay(1000) ;
Si (Udp.parsePacket()) {}
UDP.Read(packetBuffer,NTP_PACKET_SIZE) ; lire le paquet dans la mémoire tampon
unsigned long highWord, lowWord, époque ;
highWord = mot (packetBuffer [40], packetBuffer[41]) ;
lowWord = mot (packetBuffer [42], packetBuffer[43]) ;
EPOCH = highWord << 16 | lowWord ;
EPOCH = époque - 2208988800 + timeZoneOffset ;
drapeau = 1 ;
setTime(epoch) ;
ntpLastUpdate = now() ;
}
retour de drapeau ;
}