Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construye un Reloj Berlín con Arduino UNO – Reloj de Matriz LED DIY

Componentes y Suministros

Arduino UNO 1
MAX7219 (Integrado) 1 Driver de display LED de 8 dígitos, usado en matrices LED
Reloj Tiempo Real (RTC) DS1307 1
LED 5 mm Amarillo 13 Filas de horas y minutos x5
LED 5 mm Rojo 11 Filas de horas simples y minutos simples (usados RGB por disponibilidad)
Resistencia 10k Ω 1 Para ajuste de corriente MAX7219 (Iset)

Sobre el Proyecto

Este proyecto es una adaptación de un tutorial publicado en Instructables. Un reloj no tan cotidiano.

Introducción: Reloj Berlín

El Reloj Berlín (BerlinUhr o Mengenlehreuhr) fue probablemente el primer reloj digital. Existe desde 1975. Más info en Wikipedia.

¿Cómo se lee la hora? Cuatro filas de luces:

Ejemplo: 2×5h + 3h + 6×5min + 2min = 13:32 (formato 24h).

Paso 1: Electrónica

Arduino UNO, RTC DS1307 (I2C pines A4/A5), MAX7219 (SPI pines 10,11,12), LED segundos en pin 13. Resistencia 68kΩ en pin Iset del MAX7219 para limitar corriente (20kΩ causaba apagado tras 10 min).

Paso 2: Montaje

Construye un Reloj Berlín con Arduino UNO – Reloj de Matriz LED DIY

Pines MAX7219 clave:

Salidas DIG 0–4 controlan filas de LEDs. Segmentos A–G + DP reciben palabras binarias (byte) para encender LEDs individuales. Nota: El bit MSB corresponde al segmento DP, no al A – esto obligó a ajustar el código tras soldar.

Construye un Reloj Berlín con Arduino UNO – Reloj de Matriz LED DIY

Paso 3: Los LEDs

Construye un Reloj Berlín con Arduino UNO – Reloj de Matriz LED DIY

Los LEDs se agrupan por filas (cátodos comunes por fila, ánodos a segmentos del MAX7219). El LED de segundos va directo al pin 13.

Construye un Reloj Berlín con Arduino UNO – Reloj de Matriz LED DIY

Paso 4: El Código

Usa librería LedControl (GitHub). Variables en neerlandés (vijfuren = horas×5, vijfminuten = minutos×5). Convierte BCD del RTC a decimal, calcula filas y envía bytes al MAX7219.

#include <LedControl.h>
#include <Wire.h>
const int DS1307 = 0x68; // A5=SCL, A4=SDA
// ... arrays días/meses ...
byte second, minute, hour, weekday, monthday, month, year;
LedControl lc = LedControl(12, 11, 10, 1); // DIN, CLK, LOAD, devices

void setup() {
  Wire.begin(); Serial.begin(9600);
  pinMode(13, OUTPUT);
  lc.shutdown(0, false); lc.setIntensity(0, 8); lc.clearDisplay(0);
}

void loop() {
  readTime();
  // Parpadeo LED segundos
  if (second != lastSecond) { uitgang = !uitgang; digitalWrite(13, uitgang); lastSecond = second; }
  // Actualizar display cada minuto
  if (minute != lastMinute) { printTime(); lastMinute = minute; }
}

void printTime() {
  // Cálculo filas: 5h, 1h, 5min (2 bytes), 1min
  // Conversión a patrones binarios (nul, een, twee... acht, negen, tien, elf)
  // Envío a lc.setRow(0, fila, valor)
}

byte bcdToDec(byte val) { return (val/16*10) + (val%16); }

void readTime() {
  Wire.beginTransmission(DS1307); Wire.write(0); Wire.endTransmission();
  Wire.requestFrom(DS1307, 7);
  second = bcdToDec(Wire.read()); minute = bcdToDec(Wire.read());
  hour = bcdToDec(Wire.read()); weekday = bcdToDec(Wire.read());
  monthday = bcdToDec(Wire.read()); month = bcdToDec(Wire.read()); year = bcdToDec(Wire.read());
}
// ... función digitaal() para convertir 0-11 a patrones de bits ...

Código directo y educativo. ¡De paso aprendes a contar en neerlandés del 0 al 11! ;-)

Código / Librerías

LedControl: https://github.com/wayoda/LedControl

Proceso de manufactura

  1. Reloj de cuco: historia, artesanía y evolución moderna
  2. El reloj de arena: historia, artesanía y atractivo moderno
  3. La evolución de la medición del tiempo: de los relojes de sol a los relojes de cuarzo de precisión
  4. Rpibot: Robot Móvil Económico y Expandible para Aprendizaje de Sistemas Embebidos
  5. Reloj POV con Arduino: Construye una pantalla LED de persistencia de visión
  6. Reloj Espejo Infinito: Elegancia infinita y hora precisa
  7. Dominando Cálculos de Constante de Tiempo para Circuitos RC y RL
  8. Técnicas de simulación en Verilog para verificación RTL confiable
  9. Generador de reloj en Verilog: Guía de diseño e implementación
  10. Dominar time.sleep() en Python: Mejores Prácticas, Multihilo y Ejemplos Reales
  11. Dominando fechas y horas en Python: Guía práctica