Reloj 3D RGB Arduclock – Bluetooth, LED NeoPixel y RTC
Componentes y Suministros
| Arduino Nano R3 | × | 1 |
| Módulo Bluetooth HC-05 | × | 1 |
| Anillo NeoPixel WS2812 5050 RGB (7 LEDs) × 6 uds | × | 6 |
| Módulo RTC DS3231 (Digilent Pmod RTCC) | × | 1 |
| Altavoz 0,25 W 8 Ω | × | 1 |
| Filamento para impresora 3D (carcasa y difusores) | × | 1 |
Herramientas Necesarias
- Soldador y estaño
- Impresora 3D (carcasa, anillos difusores, base)
Sobre el Proyecto
Evolución del Animated RGB Wall Clock. El 3D RGB Arduclock es un reloj de sobremesa portátil o regalo, controlado vía Bluetooth desde una app Android (APK incluida). Carcasa y difusores impresos en 3D; seis dígitos de 7 segmentos formados cada uno por un anillo NeoPixel de 7 LEDs (42 LEDs totales).
Funciones Principales
- Visualización de hora, fecha y temperatura (sensor interno DS3231).
- Ajuste de hora/fecha desde el móvil (sincronización instantánea).
- Alarma con melodía Game of Thrones y efectos de luz sincronizados.
- Cambio de color global o por dígitos (horas, minutos, segundos).
- Animaciones arcoíris, teatro, color wipe, etc.
- Comandos serie/Bluetooth simples:
clock.,date.,temp.,alarm.HH.MM.,all.,d1.–d4.,animation.
Arquitectura de Hardware
- Arduino Nano – Núcleo de control (pines D4–D10 para 6 anillos NeoPixel, D12 entrada alarma, D13 buzzer, A4/A5 I²C para DS3231, D0/D1 serie para HC-05).
- DS3231 – RTC de alta precisión con compensación térmica y sensor de temperatura integrado.
- HC-05 – Comunicación UART 9600 baudios con smartphone.
- 6× Anillos NeoPixel 7 LEDs – Cada dígito 7 segmentos = 1 anillo; segmentos mapeados en array
sevendisplay[19][7](0–9, C, ', H, L, T, E, blank, N, P). - Alimentación: 5 V externo (USB o jack) → Nano → NeoPixels (pico ~2 A brillo máximo).
Detalles de Software
Librerías
Adafruit_NeoPixel– Control LEDs WS2812.DS3231– Lectura/escritura RTC (I²C).
Lógica Principal (loop())
- Lee comandos serie (Bluetooth). Parsea cadenas terminadas en
.. - Comandos reconocidos actualizan variables de color (
dg1..dg4), hora, fecha, alarma o disparan animaciones. - Cada 500 ms parpadean los dos puntos de segundos (LED 0 y 1 del anillo 7).
- Si coincide hora/alarma y está activada → ejecuta
GameOfThrones()(melodía + luces). - Función
yaz()refresca los 6 dígitos segúnd0..d5y colores actuales.
Melodía Game of Thrones
Secuencia de tonos con tone() en pin 13 y función ilumina()/apaga() que enciende LEDs específicos al ritmo de las notas (definidas con #define NOTE_...).
Animaciones Incluidas
colorWipe()– Barrido color sólido.rainbow()/rainbowCycle()– Arcoíris desplazado.theaterChase()/theaterChaseRainbow()– Persecución estilo teatro.
Código Principal (code.ino)
#include <Adafruit_NeoPixel.h>
#include <DS3231.h>
DS3231 rtc(SDA, SCL);
Time t;
#define PIN 4 // Dígito 1 (hora decenas)
#define PIN2 5 // Dígito 2 (hora unidades)
#define PIN3 6 // Dígito 3 (min decenas)
#define PIN4 7 // Dígito 4 (min unidades)
#define PIN5 8 // Dígito 5 (seg decenas)
#define PIN6 9 // Dígito 6 (seg unidades)
#define PIN7 10// Puntos segundos
#define NUMPIXELS 7
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB+NEO_KHZ800);
Adafruit_NeoPixel pixels2(NUMPIXELS, PIN2, NEO_GRB+NEO_KHZ800);
// ... pixels3..pixels7 igual ...
byte sevendisplay[19][7] = { /* mapeo 7 segmentos */ };
byte animation[7][7] = { /* patrón animación */ };
byte color[10][3] = { /* 10 paletas RGB */ };
int speakerPin=13, alarmPin=12;
String data="hello";
int alarmHour=0, alarmMin=0; byte alarmActive=0;
void setup() {
pinMode(speakerPin,OUTPUT); pinMode(alarmPin,INPUT);
rtc.begin();
// rtc.setTime(20,19,40); rtc.setDate(3,10,2018); // descomenta once
pixels.begin(); pixels2.begin(); pixels3.begin();
pixels4.begin(); pixels5.begin(); pixels6.begin(); pixels7.begin();
Serial.begin(9600);
}
void loop() {
t = rtc.getTime();
// 1. Procesa comandos Bluetooth/Serie
if(Serial.available()){
data = Serial.readStringUntil('.');
if(data=="tarih"){ /* set fecha */ }
else if(data=="saat"){ /* set hora */ }
else if(data=="alarm"){ /* set alarma */ }
else if(data=="d1"){ dg1=(dg1+1)%10; }
else if(data=="d2"){ dg2=(dg2+1)%10; }
else if(data=="d3"){ dg3=(dg3+1)%10; }
else if(data=="d4"){ dg4=(dg4+1)%10; }
else if(data=="all"){ dg1=dg2=dg3=sayac=(sayac+1)%10; }
else if(data=="hello"){ /* demo */ }
else if(data=="clock"){ /* muestra hora */ }
else if(data=="date"){ /* muestra fecha */ }
else if(data=="temp"){ /* muestra temp */ }
else if(data=="animation"){ /* ejecuta animaciones */ }
}
// 2. Parpadeo puntos segundos
static byte blink=0;
if(millis()%1000<500){ /* enciende LED 0,1 anillo 7 */ }
else{ /* apaga */ }
// 3. Comprobar alarma
if(alarmActive && alarmHour==t.hour && alarmMin==t.min){
GameOfThrones(); alarmActive=0;
}
// 4. Refrescar display si modo clock/date/temp
if(data=="clock"||data=="date"||data=="temp") yaz();
delay(10);
}
void yaz() { /* escribe d0..d5 en los 6 anillos según sevendisplay y colores dg1..dg3 */ }
void GameOfThrones() { /* secuencia tone()+ilumina() */ }
void ilumina(int note){ /* enciende LEDs según nota */ }
void apaga(int note){ /* apaga LEDs según nota */ }
// Animaciones: colorWipe, rainbow, rainbowCycle, theaterChase, theaterChaseRainbow, Wheel
Esquemático

Recursos Adicionales
- Modelos 3D, app APK y documentación completa: goo.gl/mQVxdW
- Librería DS3231: GitHub
- Librería Adafruit_NeoPixel: GitHub
Proceso de manufactura
- Construye tu Juego "UFO Attack" con Arduino UNO y Pantalla MAX7219
- Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
- Efecto fuego con agua: Arduino UNO + Neopixel Stick
- Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino
- Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
- Juego interactivo con joystick analógico y LEDs en Arduino
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Construye un Brazo Robótico Impreso en 3D Controlado por Arduino – Guía Paso a Paso
- Detector de Rango Portátil – Kit DIY Arduino Nano con HC-SR04, Batería 18650 y Carcasa Impresa en 3D
- Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
- Caudalímetro de aire residencial con Arduino: Construcción y monitorización