Tabla de contenido:

Reloj de jubilación / Cuenta ascendente / Reloj Dn: 4 pasos (con imágenes)
Reloj de jubilación / Cuenta ascendente / Reloj Dn: 4 pasos (con imágenes)

Video: Reloj de jubilación / Cuenta ascendente / Reloj Dn: 4 pasos (con imágenes)

Video: Reloj de jubilación / Cuenta ascendente / Reloj Dn: 4 pasos (con imágenes)
Video: Sólo Repite Estas Dos Palabras Antes De Dormir 2024, Noviembre
Anonim
Reloj de jubilación / Cuenta ascendente / Reloj Dn
Reloj de jubilación / Cuenta ascendente / Reloj Dn

Tenía algunas de estas pantallas LED de matriz de puntos de 8x8 en el cajón y estaba pensando qué hacer con ellas. Inspirado por otros instructables, tuve la idea de construir una pantalla de cuenta regresiva / ascendente para contar regresivamente hasta una fecha / hora futura y si el tiempo objetivo pasaba, cuenta hacia arriba. Hice de este ahora mi reloj de jubilación en el estante.

La idea de ponerlo en una botella fue más un accidente pensando en una funda. Otros ponen barcos en una botella, ¿por qué no un reloj?

También quería que el reloj obedeciera al horario de verano y, por supuesto, recordar la configuración y la hora al desconectarlo. Estoy alimentando el reloj a través de USB, lo que lo hace reprogramable si desea hacer algo diferente o simplemente agregar funciones al código. El código es bastante simple y también podría necesitar mucha optimización. No me preocupé mucho por el consumo de RAM, tengo que admitirlo. Si tengo el tiempo y la motivación, volveré a hacerlo.

Suministros

1. Arduino Nano

2. RTC (utilicé el DS3231 común que también tiene una EEPROM)

3. Módulo de matriz de puntos de 12x 8x8. (Tenía los módulos cuádruples que son más fáciles de alinear)

4. LDR para ajustar el brillo de la pantalla

5. Resistencia de 10 kOhmios

6. Condensador 5x 100 uF suprimiendo picos de la pantalla

7. Para aumentar el contraste de los módulos de 8x8, utilicé la "Película de ventana" teñida de oscuro. La pantalla muestra los LED como puntos blancos si no están iluminados. La película de la ventana le da un aspecto negro brillante.

Paso 1: conecte los componentes

Conecte los componentes
Conecte los componentes
Conecte los componentes
Conecte los componentes

Usé tres de las pantallas cuádruples para ensamblar la pantalla. Para mostrar una fecha con barras y la hora con dos puntos, necesitamos espacio para 8 caracteres. Usando la fuente típica de 5x7, necesitaríamos seis bloques de 8x8 por fila. Corté uno de los bloques cuádruples por la mitad y los dispuse como dos filas por seis bloques como se muestra en el esquema de la placa de pruebas.

Paso 2: Piezas impresas en 3D

Piezas impresas en 3D
Piezas impresas en 3D
Piezas impresas en 3D
Piezas impresas en 3D
Piezas impresas en 3D
Piezas impresas en 3D

Para sostener las dos filas de la pantalla y colocarlas en la botella, imprimí anillos de distancia redondos para el marco de la pantalla. Agregué los archivos que usé a continuación. Para poder imprimirlos sin soporte, se dividen en partes. La captura de pantalla muestra los dos anillos pegados al marco de la pantalla. La tapa del cuello de la botella aloja los tres botones para cambiar entre los modos de visualización y configurar la hora actual y la hora objetivo. La tapa del cuello de la botella la imprimí en TPU, lo que permite deslizar el cable USB en la tapa sin cortar los conectores y atarlo con algunos devanados de alambre. Olvidé mencionar que usé una botella de vino de 1,5 L que corté en la parte inferior. Todas las piezas a imprimir se colocan en una plataforma de impresora de 20x20 cm (8x8 in).

Paso 3: el código

El código de Arduino utiliza algunas bibliotecas de uso común.

MD_MAX72xx

SPI

Cable

RTClib

Zona horaria

TimeLib

Hay algunas líneas en el archivo INO que pueden necesitar ser cambiadas:

Línea 38: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- depende del módulo 8x8 y su orientación

en lugar de FC16_HW podría uno de:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

El código está usando la configuración para la hora central de EE. UU. Y debe ajustarse para otras zonas horarias:

Línea 53/54:

TimeChangeRule myDST = {"CDT", segundo, domingo, 2 de marzo, -300}; // Hora de verano UTC-5TimeChangeRule mySTD = {"CST", primero, domingo, 2 de noviembre, -360}; // Hora estándar UTC -6

Esto es fácil de ajustar. El nombre CST / CDT es solo para tener una referencia. No muestro la abreviatura de tres letras, por lo que no importa. Los siguientes parámetros se refieren a qué día del mes se está produciendo el cambio. El ajuste es en minutos, por lo que las ubicaciones que utilicen ajustes de +/- 30 minutos también funcionarán.

El RTC se ejecuta internamente en UTC-Time, lo que permite que la biblioteca de zona horaria funcione según lo previsto. Es posible que se pregunte por qué el código hace referencia al chip DS1307 más antiguo a diferencia del chip de reloj que usé, pero esto no importa. La biblioteca funciona bien con cualquiera de los chips. El DS1307 tiene la tendencia a desviarse más que el DS3132. el DS3132 es el reloj preferido. Para aquellos que deseen agregar tiempo de Internet, un ESP8266 hará el trabajo con bastante facilidad. Esto podría hacer que el RTC sea obsoleto. Si está realizando estos cambios, use la EEPROM de Arduino para almacenar el tiempo objetivo, usé la EEPROM de RTC para hacerlo.

Paso 4: funcionamiento y configuración

Operación y configuración
Operación y configuración
Operación y configuración
Operación y configuración
Operación y configuración
Operación y configuración

Hay tres botones

1. Menú / configuración

2. Arriba

3. Abajo

El botón de menú permite recorrer los tres tipos de visualización: hora actual, hora objetivo, hora delta. El tiempo delta muestra el número de días, HH / MM / SS entre la hora actual y la hora objetivo. Mostrará t- y una cuenta regresiva si el objetivo está en el futuro ot + y contará hacia arriba si el objetivo está en el pasado.

Para ajustar la hora actual o la hora objetivo, seleccione la visualización de la hora actual o la hora objetivo. Para cambiar la hora, mantenga presionado el botón de menú durante 2 segundos y suéltelo, lo que lo llevará al modo de configuración. El vecino "/" o ":" se convertirá en "" para indicar qué dígito está ajustando. Utilice los botones arriba / abajo para ajustar el hh / mm / ss y el mm / dd / aa individuales. No agregué una configuración para cambiar entre mm / dd / aa y dd / mm / aa, esto debe cambiarse en el código o tal vez alguien esté dispuesto a agregar esta función.

Notará que si pasa los minutos por encima de 59 o por debajo de 00, la visualización de la hora también se ajustará. lo mismo es cierto para segundos, horas y días cambiando el siguiente valor más alto si cruza por debajo de 0 o por encima del máximo para este dígito. Hice esto para evitar programar los distintos límites de meses individuales y si febrero necesita 29 días en un año bisiesto. El ajuste del tiempo se realiza en realidad en tiempo de época, segundos desde el 1 de enero de 1970.

Agregué un video simple para mostrar el conteo. Quería hacerlos como una pantalla de rueda giratoria. Si desea ajustar la duración del cambio, la línea 69 del INO le ofrece algunas opciones para acelerar o ralentizar el cambio. 120 ms haría que los dígitos se desplazaran lo suficientemente lento, ya que sería una rueda en funcionamiento continuo.

Espero que hayas disfrutado de este instructivo.

Patrick Geschwindner

Recomendado: