Reloj HSV: Reloj Vibrante y Personalizable para Entusiastas de Arduino
Componentes y Suministros
| Arduino UNO | × | 1 |
| Seeed Shield TFT Táctil 2.8" (V1.0) | × | 1 |
Sobre este Proyecto
Reloj HSV
Durante mi último viaje a EE. UU., compré un Shield Seeed TFT Táctil de 2.8" (V1.0) en RadioShack. Lo utilicé para crear un reloj colorido para el 80.º cumpleaños de mi padre.
HSVClock.zip | YouTube
Los puntos clave son:
- Esfera del reloj: Basada en una cuadrícula de celdas rectangulares. Las esquinas de las celdas se distorsionan con pequeñas cantidades aleatorias y cada celda se divide por una diagonal aleatoria. Se aplica una gama aleatoria de colores a través de las celdas y cada triángulo se sombrea para dar un aspecto 3D. Internamente, los colores se representan en HSV (Matiz, Saturación y Valor) pero se convierten a RGB para enviarlos al LCD. La hora se muestra con una fuente simple coloreando ciertas celdas en colores complementarios.
- Carcasa: Madera de bambú cortada con láser, diseñada en Inkscape, fabricada por Ponoko.
- Montaje: El shield no tiene orificios de montaje, por lo que lo sujeto efectivamente en la carcasa contra la cara frontal. Un Arduino Uno se acopla al shield mediante los pines de cabecera.
- RTC Externo (DS3232): Necesitaba acceso I2C. El shield no expone pines libres, así que usé un Uno que tiene pines SDA/SCL adicionales. Hice un conector de cabecera de bajo perfil que queda bajo el shield. Alimentación y masa provienen de un conector similar en los pines ICSP, también bajo el shield.
- Horario de Verano: Añadí soporte simple en el sketch (¡un reloj menos que ajustar dos veces al año!). En lugar de lidiar con lógica como "el último domingo de septiembre", se basa en una pequeña tabla de fechas de inicio y fin específicas para años futuros (para Nueva Zelanda en mi caso).
- Pantalla Táctil: Simplifiqué el código de la librería táctil para que actúe solo como una cuadrícula de 4x4 de botones con antirrebote. Por ejemplo, la hora se ajusta tocando la esquina inferior izquierda y la superior derecha.
- Optimización de Velocidad: Hice esfuerzos considerables para acelerar el renderizado: un repintado de las celdas toma aproximadamente un cuarto de segundo. El renderizado se basa en escribir filas horizontales de píxeles de un color particular. Uso un algoritmo de Bresenham modificado para calcular los límites horizontales de una serie de pares de líneas que constituyen los triángulos de una celda dada. El código que envía píxeles al LCD se basa en la librería pero está en línea, desenrollado, simplificado y optimizado. Como los datos de color de píxel se escriben a través de múltiples PORTx, todos los valores se precalculan al seleccionar el color, por lo que establecer N píxeles en fila a ese color es más rápido.
- Orientación Landscape: El LCD se usa en orientación horizontal. Luché mucho para que la pantalla se actualizara en filas horizontales. La hoja de datos del controlador es confusa. Hay comandos para establecer la ubicación del "cursor", "Dirección Horizontal/Vertical DRAM (R20h, R21h)". Los datos de píxel se escriben en la ubicación del cursor y este se actualiza, saltando a la siguiente línea cuando es necesario. También hay un comando para cambiar la orientación de la pantalla, "Modo de Entrada (R03h)", que habla de ajustar los incrementos de fila y columna del cursor. Sin embargo, descubrí que cambiar a Landscape y luego posicionar el cursor no funcionaba. La solución que finalmente encontré (que puede estar enterrada en la hoja de datos) es usar el comando "ventana" en lugar del comando cursor; "Posición de Dirección RAM Horizontal y Vertical (R50h, R51h, R52h, R53h)". Establecer las coordenadas de la esquina superior izquierda de la ventana hace que los datos de píxel comiencen allí y se actualicen horizontalmente (en landscape).
Circuito
El circuito es simplemente:
- El shield TFT montado en el Uno.
- +5VDC, Tierra, SDA y SCL van desde los pines etiquetados en el Uno al módulo RTC. Se muestra en las primeras tres fotos de abajo (shield retirado). Nota: por razones de acceso, la alimentación/tienda proviene del conector ICSP1.

Fotos















Proceso de manufactura
- La Kazoo: De Mirlitón Antiguo a Juguete Plástico Moderno – Historia, Fabricación y Futuro
- El Arpa: De Raíces Ancestrales a Obras Maestras Modernas
- Espuma de Poliestireno Expandido (EPS): Producción, Propiedades y Sostenibilidad
- Dominando Sensores en Raspberry Pi: Guía Práctica de Electrónica y Protocolos de Comunicación
- Construye un robot inteligente con Bridge Shield – Integración Raspberry Pi y Arduino
- Sistema de Iluminación DMX Controlado por Web – Controlador Maestro Arduino
- Construye un Spybot controlado por Bluetooth con Arduino
- Comprender los cortahilos: Tipos, usos y aplicaciones
- Comprender las canteras: Tipos, usos y distribución global
- Comprender las llaves maestras (llaves esqueleto): Tipos, usos e importancia histórica
- Generación de nitrógeno in situ: Mejorando la seguridad y fiabilidad en laboratorios