Tabla de contenido:
- Paso 1: el caso del reloj
- Paso 2: Neopixels
- Paso 3: ajuste del texto frontal
- Paso 4: Efecto arcoíris completo
- Paso 5: los diversos componentes
- Paso 6: código para el reloj
- Paso 7: la descripción del hardware
- Paso 8: LDR para el control de brillo de los Neopixels
- Paso 9: Reducir el consumo de energía de WS2812B
- Paso 10: Smiley en el Word Clock
- Paso 11: Qué bibliotecas se utilizan
- Paso 12: Control remoto por infrarrojos simple
- Paso 13: ¿Qué sigue?
Video: Reloj de palabras de arco iris con un efecto de arco iris completo y más: 13 pasos (con imágenes)
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Metas
1) simple
2) No es caro
3) Tan eficiente energéticamente como sea posible
Rainbow Word Clock con un efecto de arco iris completo.
Una carita en el Word Clock.
Mando a distancia por infrarrojos simple
Actualización 03-nov-18 LDR para el control de brillo de los Neopixels
Actualización 01-jan-19 Reducción del consumo de energía de WS2812B.
Actualización 15-ene-19 Smiley.
Actualización 23-jan-19 Code 1.6
Actualizar enlaces de bibliotecas 10-mar-19
Actualización 14-apr-19 versión 1.7 Opción smiley on / off collor rainbow / fix enz.
Última actualización 01-jun-19 versión 2.0 control remoto IR y rediseño de código
Paso 1: el caso del reloj
Con algunas herramientas simples y un poco de habilidad, no es difícil hacer un reloj con letras. Usé los materiales disponibles para mí.
Para el caso utilicé una barra de pino en bruto en la que corté algunos marcos. Estos harían los cuatro lados de la caja, que estaban pegados y reforzados con un pequeño trozo de madera en las esquinas. Entonces la madera necesita lijar y pintar.
Las letras son cortadas en papel de aluminio por una impresora en escritura espejo. La lámina está en la parte posterior de la placa de vidrio y está cubierta con un papel de patrón de doble capa para una mejor distribución de la luz. El vidrio está fijado con sellador de silicona.
Paso 2: Neopixels
Los LED de Neopixels están dispuestos sobre una placa de madera, en la que primero se taladran agujeros de 3 mm. En la parte delantera están agrandados a tamaño carta a 3/4 de profundidad. Después de eso, los 3 mm en la parte posterior se aumentan a 10 mm, este es el tamaño de un Neopixel. Para algunos personajes, entre otros, la W, el orificio debe ajustarse ligeramente.
Usé madera contrachapada que se astilló rápidamente, MDF puede ser mejor.
Con los LED individuales no está limitado a una distancia fija, como es el caso de las tiras de LED. Los LED deben estar conectados entre sí. Puede hacer esto con todos los trozos cortos de alambre. Pero las dos conexiones mínimas (-) son como las dos conexiones positivas (+) conectadas internamente, por lo que la misma conexión.
Puede ahorrarse mucho trabajo soldando un trozo de cable al LED izquierdo y luego al LED derecho. Luego suelda los intermedios.
La conexión de datos, por supuesto, debe tener partes cortas porque la salida de datos va a la entrada de datos.
Paso 3: ajuste del texto frontal
La placa frontal está ahora en holandés, pero simplemente para convertir en cualquier idioma.
Los leds de NeoPixels se conmutan aquí sucesivamente de 0 a 167. La numeración va desde la primera fila en la parte superior izquierda a la derecha y luego a la segunda fila de derecha a izquierda, etc. El ajuste se puede realizar según sus propias necesidades. El número de NeoPixels está determinado por la cantidad de caracteres. Se pueden ajustar menos o más Neopixels en la siguiente línea
#define NUMPIXELS 168 // ¿Cuántos NeoPixels están conectados al Arduino?
168 es otro número. La numeración comienza en 0. Puede hacer cualquier texto. Si cambia el texto, también tendrá que ajustar las palabras correspondientes. La numeración sigue siendo la misma.
Como ejemplo, DRIE de los minutos, se determina en el código
void zetmDrie () {
Led_Aan [56] = 1, Led_Aan [57] = 1, Led_Aan [58] = 1, Led_Aan [59] = 1; // min-drie
}
Si desea hacer la palabra Arduino, entonces es así:
void zetArduino () {
Led_Aan [38] = 1, Led_Aan [50] = 1, Led_Aan [56] = 1, Led_Aan [93] = 1;
Led_Aan [120] = 1, Led_Aan [135] = 1, Led_Aan [147] = 1; // Palabra-arduino
}
Entonces puedes hacer palabras entre.
Para las palabras de reloj, es útil si forman una palabra contigua, pero no es absolutamente necesario. Las letras no utilizadas no necesitan Neonpixels. Los tengo todos llenos para el uso de posibilidades futuras además del tiempo que se muestra.
Si cambia el punto de inicio o cambia la secuencia de sucesión, la numeración debería cambiar en consecuencia.
Paso 4: Efecto arcoíris completo
El reloj está ahora tan programado que se cuenta el número de veces por segundo cuántos neopixsels hay encendidos.
El espectro total es aproximadamente el número de divididos y luego ligeramente desplazados. Como resultado, cada Neopixel tiene un color diferente que cambia continuamente. Neopixel nr 1 y nr 167 se suceden en algunos colores involucrados.
Si prefiere colores menos diferentes al mismo tiempo, esto es fácil de ajustar. El color sigue cambiando en todo el espectro, pero con una parte más pequeña. Neopixel nr 1 y nr 167 ya no se suceden por algún color.
El brillo se puede configurar en la siguiente línea, pixels.setBrightness (150);
Un número menor es menor y un número mayor más brillo.
Paso 5: los diversos componentes
Los siguientes componentes que utilicé
Arduino Pro Mini ATMEGA328 5V / 16MHz
Módulo de reloj DS3231
168 piezas Neopixels led's WS2812 LED Chip y disipador de calor 5V 5050 RGB WS2811 IC incorporado
Plantilla de letras de papel de aluminio
Receptor DCF77
Paso 6: código para el reloj
Aquí está el código. Se agregó un control de brillo y apagado cuando no hay nadie presente y por la noche.
Se agregó el sensor de movimiento de microondas por radar RCWL-0516 (busque RADAR)
Después de 10 minutos sin movimiento, los NeoPixels se apagan.
Acerca de la versión 2.0
El uso de memoria fue demasiado, con advertencias de falta de memoria en el compilador. Por eso he cambiado por completo el código, pero el funcionamiento se ha mantenido igual y se ha añadido un receptor de infrarrojos.
Hay un fragmento de código para proporcionar datos a la EEPROM. Ejecútelo una vez eliminando temporalmente / * y * /. Buscar => ejecutar esto una vez para proporcionar datos a la EEPROM
Al comienzo del bucle vacío hay un código para leer el código desde su propio control remoto. Puede ejecutarlo eliminando temporalmente / * y * /, no olvide volver a colocarlos después. También puede definir sus propios botones. El código leído debe ingresarse en => Defina sus propios botones aquí
El control remoto de Samsung funciona mejor que el simple (muy barato).
Paso 7: la descripción del hardware
Existen diferentes versiones del Arduino Pro Mini. Tenga en cuenta que las conexiones pueden diferir.
Se agregó un sensor de movimiento de microondas RCWL-0516.
Mientras haya movimiento en las proximidades del reloj, el NeoPixel permanecerá encendido.
y tan pronto como no haya más movimiento, el NeoPixel se apagará después de unos minutos.
En la versión 2.0, el receptor DCF77 recibe alimentación a través del pin 13. Este pin se define como salida y se establece en alto cuando se direcciona la rutina DCF77. El receptor DCF77 utiliza 0,28 mA y solo se necesita unos minutos al día.
Desactivar guarda
5 Voltios * 0,28 mA / 1000 * 24 horas * 365 días * Fuente de alimentación de eficiencia 1 / 0,85 = 14,4 vatios al año.
Esto no parece mucho, pero todo ayuda.
Paso 8: LDR para el control de brillo de los Neopixels
Se agregó un LDR para el control de brillo de los neopíxeles.
He pegado el LDR en el espacio de neopixel 103. Este no se usa en la visualización de la hora y por lo tanto no influye en la regulación. El papel humedece la luz incidente, pero eso no supone ningún problema.
El divisor de voltaje de LDR y la resistencia de 20 kohm va a A0 del Arduino Pro Mini. El voltaje es un indicador de la intensidad de la luz y por lo tanto también un indicador de la cantidad de luz que tienen que dar los neopíxeles.
La fórmula que utilizo me da un buen control de la luz, se puede ajustar según las circunstancias. Dependiendo de la cantidad de luz, el voltaje puede variar entre 0 y 5 voltios que se convierte en 0 a 1024 cuentas que están en "LDRValue".
Si el nuevo valor medido es mayor que el último valor calculado, la intensidad se incrementa en 1, si es menor que se reduce en 1 y si es igual no se hace nada. Para que el valor avance lentamente, de modo que no haya efecto de parpadeo, solo se aumenta o disminuye 1 y debido a que el cálculo está en el bucle, solo se vuelve a calcular después de recorrer el bucle 25 veces.
La intensidad es teóricamente un mínimo de 20 y un máximo de 1024/7 + 45 = 191. El valor máximo que medí fue 902, que equivale a una intensidad de 173. Esto encaja bien con los 150 que he establecido como valor predeterminado. (ver pixels.setBrightness (150))
En la versión 2.0 se puede configurar el control a través del control remoto. Se han agregado los siguientes parámetros: Brightness_min como mínimo y Brightness_max como configuración máxima y Brightness_Offset como parámetro de configuración. Brightness_min y _max son los valores que pueden depender de su propia situación. Brightness_Offset es un valor que se puede configurar con el mando a distancia y con el que se puede configurar más o menos brillo.
También hay una banda muerta de 3 entre los valores LDRValue medidos y BerLDRValue calculados.
Utilice las declaraciones de impresión en el control de brillo vacío para comprobar la configuración de brillo.
Paso 9: Reducir el consumo de energía de WS2812B
Los controladores en los neopíxeles direccionables WS2812B están consumiendo corriente incluso cuando los neopíxeles están apagados, configurados en color 0 (no hay elementos de neopíxeles encendidos).
Cuando los 169 neopíxeles están fuera, mido 69 mA a los neopíxeles. Suponiendo que el reloj está apagado 12 horas al día, el apagado total ahorra: 5 (fuente de alimentación de voltios) * 69/1000 (miliamperios / 1000 = amperios) * 12 (número de horas por día) * 365 (número de días en un año) = 1511 Watt hora. Entonces, sobre una base anual de 1,5 Kwh. Estoy de acuerdo, no es mucho en sí mismo, pero muchos pequeños hacen uno grande.
El circuito es simple El plus de la fuente de alimentación se conmuta mediante un MosFet de canal P. El sensor de radar determina si los neopíxeles están activados o desactivados. He puesto dos pares de MosFet para mantener la resistencia ON lo más baja posible debido a la pérdida de los MosFets. En uso normal, mido 4, 5 milivoltios sobre los MosFets. La puerta está controlada por la salida 4 del Arduino a través de una resistencia de 470 Kohm. Si la salida es baja (0) digitalmente, los neopíxeles están encendidos y en alta (1) están apagados.
Paso 10: Smiley en el Word Clock
Una carita en el Word Clock.
De vez en cuando aparece una carita sonriente en el reloj, pero eso te hace feliz.
El Smiley es activado por el sensor de radar. El número de veces que se mueve (ajustable) es una medida de la apariencia del Smiley. Los signos de% indican que se ha detectado movimiento. Con cada décimo movimiento (ajustable), el Smiley aparece con un Winky Face y después de tres veces un Winky Face aparece la cuarta vez que un Smiley Face saca la lengua.
El Smiley es un pequeño cambio en el código.
Paso 11: Qué bibliotecas se utilizan
Qué bibliotecas se utilizan.
Los uso en Windows 7 con Arduino IDE 1.6 y también se han probado en Windows 10 con Adruino IDE 1.8.8
RTClib-master
Arduino-DS3231-master
Adafruit_NeoPixel-master
Arduino-DCF77-master
Biblioteca IRremote de Ken Shirriff
Debido a que siempre hay confusión sobre la biblioteca utilizada, agrego la que utilizo.
La librería IRremote consume mucha memoria, en el IRremote.h se indica que puedes deshabilitar cualquier protocolo no utilizado
// Cada protocolo que incluye cuesta memoria y, durante la decodificación, cuesta tiempo // ¡Deshabilite (establezca en 0) todos los protocolos que no necesita / desea!
Tengo todo deshabilitado excepto el protocolo NEC y Samsung. Esto da un ahorro de memoria del 10%. Por el momento ya no hay problema con la cantidad de memoria, por lo que por el momento no es necesaria la desactivación.
Paso 12: Control remoto por infrarrojos simple
La Asamblea
Como puedes ver en las fotos, el orificio para el LED 132 ha resultado un poco demasiado grande. Hice un buen uso de esto y le agregué el receptor de infrarrojos. Conecte el pin de datos del receptor IR VS1838 al pin 7 del Arduino. Además, conecte la fuente de alimentación positiva y negativa. El receptor de infrarrojos utiliza 0,21 mA y también se puede conectar a la fuente de alimentación plus después del interruptor FET. Esto se traduce en un ahorro, si el reloj está encendido el 50% del tiempo, de 5 Voltios * 0,21 mA / 1000 * 12 horas * 365 días * 1 / 0,85 fuente de alimentación de eficiencia = 5,4 vatios por año. Esto no parece mucho, pero todo ayuda.
El funcionamiento es el siguiente
Presione cualquier tecla del control remoto por infrarrojos y luego la tecla OK. La primera vez que pulses terminarás en el procesamiento de IR y la segunda vez detectarás si fue una solicitud justificada. La segunda vez, OK debe seguir rápidamente a la primera pulsación de la tecla porque, de lo contrario, vuelve a retroceder. Hice esta construcción de modo que apenas obtuve el primer código correctamente decodificado y por lo tanto no terminé en el manejo de IR.
Una vez en el manejo de infrarrojos, se encienden varios LED para obtener información, para obtener una explicación, lea más y vea la primera imagen.
La descripción es para el control remoto simple, pero puede usar cualquier control remoto y definir sus propias teclas. También usé un control remoto de Samsung.
Las primeras cuatro teclas corresponden a las cuatro filas superiores de LED. Cuatro LED giran hacia la izquierda o hacia la derecha según la configuración. Cuando se presionan las teclas 1 a 4, el estado se invierte y se almacena en la memoria.
1 color fijo o efecto arcoíris
2 segundos de flash desactivado o segundo flash activado
3 emoticonos desactivados emoticonos activados
4 DCF77 desactivado o DCF77 activado
El número de la clave se muestra en las siguientes teclas
5 contador de emoticonos
6 ancho del espectro del arco iris
7 ajuste rojo fijo
8 arregla el ajuste verde
9 arregla el ajuste azul
Las filas 6, 7 y 8 de los LED ahora corresponden al valor establecido, la fila 6 indica las unidades, la fila 7 las decenas y la fila 8 las centenas. Cada fila comienza con el valor cero. Entonces, el primer led de la fila es 0, el segundo es 1, etc.
0 ajuste de hora
/ / ajuste de brillo
Cuando se presiona el botón 0, los "diez" LED se iluminan para indicar que desea configurar la hora y cuando presiona 0 por segunda vez, la hora configurada aparece en la pantalla.
Ahora se puede configurar la hora y se muestra en la pantalla.
Configure la hora correcta y luego, si el minuto es el mismo en un reloj de referencia, presione el botón OK.
Se ajusta el tiempo.
Si no acciona el botón de minutos u horas, no se realizará ningún cambio de hora. Si los presiona, la hora se configurará inmediatamente.
El valor de las teclas 5 a 9 se puede cambiar con las teclas
la derecha es más 1
la izquierda es menos 1
adelante es más 10
el reverso es menos 10.
y para el ajuste de la hora
la derecha es más 1 minuto
la izquierda es menos 1 minuto
adelante es más 1 hora
reverso es menos 1 hora
A veces sucede que la pulsación de tecla no se reconoce o se realiza dos veces. Por lo tanto, preste atención si la configuración va bien; de lo contrario, intente o corrija nuevamente. El control remoto de Samsung que también probé funcionó muchas veces mejor que el control remoto simple (muy barato).
Al configurar el color, verá el cambio directamente en toda la pantalla. Para obtener un sitio con una descripción general de los colores, consulte https://www.helderester.nl/kleurentabel.html. Por supuesto, puede establecer cualquier valor.
Si el ancho del espectro del arco iris tiene un valor de 0, el espectro es muy estrecho y la pantalla tiene un color que cambia constantemente.
La desventaja de establecer la hora de esta manera es que no se puede calcular una transición verano / invierno porque tenemos la fecha incorrecta. No importa para el reloj en sí porque no lo usamos ahora.
Paso 13: ¿Qué sigue?
Lo que sigue, suena, si la memoria libre aún es suficiente.
Ya tengo las cajas de altavoces. Son de una vieja computadora portátil.