Paso 8: Estándar vs horario
En primer lugar, necesitamos leer un switch para determinar el formato, entonces necesitamos cambiar un código basado en los resultados de que leer.
Vamos a utilizar pin 6 del interruptor, como el escudo de Ethernet se utiliza pines 4, 10, 11, 12 y 13.
Conectar un interruptor entre pin 6 y masa. Usted no necesita una resistencia de pullup, pues utilizaremos un integrado en el arduino usando el comando INPUT_PULLUP.
Para hacer este trabajo, usted necesita RESET o ciclo de alimentación de tu Arduino entre cambios, como el código del interruptor no está en bucle vacío.
Aquí está el código afectado tal y como actualmente está:
/ * Seleccione el desplazamiento (en segundos) a su hora local
Este ejemplo es GMT - 4 * /
const timeZoneOffset largo =-14400 L;
cambiar a / * Seleccione el desplazamiento (en segundos) a su hora local
Este ejemplo es GMT - 4 * /
largo timeZoneOffset;
Agregar esto antes de instalación de vacío:
Interruptor de horario de verano
int dstPin = 6; interruptor conectado al pin digital 5
int dstVal = 0; variable para almacenar el valor leído
y cambiar la función de getTimeAndDate() int entero con el código siguiente:
No altera esta función, es utilizado por el sistema
int getTimeAndDate() {}
Interruptor de zona horaria
pinMode (dstPin, INPUT_PULLUP); pone el pin digital 6 como entrada y activa Levante resistencia
dstVal = digitalRead(dstPin); leer la entrada de pin
Si (dstVal == 1) {}
timeZoneOffset =-14400 L;
} else {}
timeZoneOffset =-18000 L;
}
int bandera = 0;
UDP.Begin(localPort);
sendNTPpacket(timeServer);
Delay(1000);
Si (Udp.parsePacket()) {}
UDP.Read(packetBuffer,NTP_PACKET_SIZE); Lea el paquete en el buffer
highWord largo sin firmar, lowWord, época;
highWord = palabra (packetBuffer [40], packetBuffer[41]);
lowWord = palabra (packetBuffer [42], packetBuffer[43]);
época = highWord << 16 | lowWord;
época = época - 2208988800 + timeZoneOffset;
bandera = 1;
setTime(epoch);
ntpLastUpdate = now();
}
regresar de bandera;
}