Paso 4: Escribir código para manejar el reloj
El código del reloj se puede dividir en dos partes; el código que se adelantará el reloj en un momento dado y el código que obtiene la hora actual forman el internet.El código de avance del reloj tiene unas consideraciones especiales:
- Necesidades para avanzar en el tiempo en 30 intervalos de segundos.
- Si el tiempo mostrado está detrás, el avance debe correr más rápido hasta que es atrapado.
- Si la hora mostrada es muy a la zaga, y es más rápido esperando el momento de ponerse en lugar de intentar conseguir la pantalla del reloj atrapada, entonces el reloj debe esperar simplemente.
- Las matemáticas del reloj tiene que ser capaz de manejar el mediodía/medianoche, donde el tiempo se envuelve con eficacia a cero.
- El reloj debe el seguimiento de la última posición de las manos, por lo que no es necesario reiniciar si se pierde la energía.
- Tiene que haber un mecanismo para definir inicialmente la posición de las manos, para que el programa pueda mover por consiguiente.
El bucle principal de la aplicación sigue comprobando si la hora actual es más de 30 segundos por delante de la hora indicada. Si es, entonces se inicia un movimiento de avance y el tiempo mostrado nuevo se registra en el Arduino EEPROM. Un avance establece inicialmente la clavija del accionamiento de la bobina alta. Un segundo pedazo de código desde el bucle principal comprueba si el período de duración de pulso bobina ha sido alcanzado y si es así fijar el perno bajo otra vez. El código no probar y realizar otro impulso para un periodo de tiempo establecido. Terminé con una bobina en vez de 150ms y un mínimo tiempo de 850ms, pero esto puede ser necesario ajustar según el movimiento de su reloj.
El código que almacena el tiempo en la EEPROM utiliza algunos trucos para llegar a tanta vida de Arduino de EEPROM como sea posible. Cada bit de la EEPROM tiene un número limitado de escribe ciclos antes de se producirá un error. Para estirar esto, usé un poco para cada intervalo de 30 segundos que el reloj puede mostrar (un total de 1440 posiciones posibles). Utiliza 180 bytes de EEPROM para esto. A la medianoche y el mediodía, la matriz se borra a todos los ceros. Entonces después de los primeros 30 segundos se encuentra el primer bit del intervalo. En 1 minuto, un segundo bit está establecido y así sucesivamente hasta jus antes de medianoche o mediodía todos los bits de la matriz. Por lo tanto, cada bit se escribe sólo 4 veces al día. Que debe dar una vida útil superior a 15 años (probablemente mucho más).
Cuando el reloj está encendido, la última vez que aparece es leída de la EEPROM.
Ajuste de la hora indicada se realiza a través de una simple página web que sirve el reloj. Esto también fue útil durante la depuración.