Crear reloj y calendario usando Arduino, RTC y display 7 segmentos (x4)

Proyectos hechos por una persona o muy pequeño grupo a modo personal, no proyectos industriales.
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 484
Registrado: 04 Jul 2016, 11:17
Agradecido: 102 veces
Agradecimiento recibido: 134 veces

Crear reloj y calendario usando Arduino, RTC y display 7 segmentos (x4)

Mensaje sin leer por Naguissa »

Quería poner un ejemplo muy sencillo de como hacer un reloj usando:

- Un reloj RTC.
- Un Arduino (puede ser el nano o el pro-mini).
- Un display 7 segmentos de 4 dígitos o 4 displays individuales de 7 segmentos.


Para hacerlo usaremos las siguientes librerías:

- uRTCLib : Para controlar el RTC.
- uSevenSegmentLib : Para controlar el display.
- uTimerLib : Es una dependencia de la anterior.

Código inicial, sólo los dígitos

Empezamos montando el display 7 segmentos para que muestre, alternativamente, 0123 y 3210:

Código: Seleccionar todo

#include <uSevenSegmentLib.h>

// Cambiar los pines a los que necesitemos

#ifdef _VARIANT_ARDUINO_STM32_
  int pins[8] = {D4, D5, D6, D7, D8, D9, D10, D11};
  int muxes[3] = {D12, D13, D14};
#else
  int pins[8] = {1, 2, 3, 4, 5, 6, 7, 8};
  int muxes[3] = {9, 10, 11};
#endif

uSevenSegmentLib sevenSegments(3, pins, muxes);

void setup() {
  sevenSegments.zeroFill(true);
  sevenSegments.set(0);
  sevenSegments.attachInterrupt();
}

void loop() {
      long int displayNumber = 1 * 100 + 23;
      sevenSegments.set(displayNumber);
      
      delay(5000); // Change each 5 seconds

      displayNumber =  32 * 100 + 10;
      sevenSegments.set(displayNumber);
      
      delay(5000); // Change each 5 seconds
}


Añadimos el RTC:

Ahora, en lugar de nuestros números, añadimos el RTC para que saque la hora de él:

Código: Seleccionar todo

#include <uRTCLib.h>
#include <uSevenSegmentLib.h>

uRTCLib rtc;

// Cambiar los pines a los que necesitemos

#ifdef _VARIANT_ARDUINO_STM32_
  int pins[8] = {D4, D5, D6, D7, D8, D9, D10, D11};
  int muxes[3] = {D12, D13, D14};
#else
  int pins[8] = {1, 2, 3, 4, 5, 6, 7, 8};
  int muxes[3] = {9, 10, 11};
#endif

uSevenSegmentLib sevenSegments(3, pins, muxes);

void setup() {
  sevenSegments.zeroFill(true);
  sevenSegments.set(0);
  sevenSegments.attachInterrupt();
}

void loop() {
      rtc.refresh();
      long int displayNumber = rtc.day() * 100 + rtc.month();
      sevenSegments.set(displayNumber);
      
      delay(5000); // Change each 5 seconds

      displayNumber = rtc.hour() * 100 + rtc.minute();
      sevenSegments.set(displayNumber);
      
      delay(5000); // Change each 5 seconds
}

Si al añadir el RTC no funciona bien, revisad que las conexiones de éste estén funcionando correctamente; es el punto mas delicado.


Librerías usadas:

- uSevenSegmentLib - Displays 7 segmentos.
- uTimerLib - Usada por la anterior.
- uRTCLib - RTC.
Estos usuarios agradecieron al autor Naguissa por el mensaje:
Daniel
Valoración: 33%

Tags:
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 484
Registrado: 04 Jul 2016, 11:17
Agradecido: 102 veces
Agradecimiento recibido: 134 veces

Re: Crear reloj y calendario usando Arduino, RTC y display 7 segmentos (x4)

Mensaje sin leer por Naguissa »

Actualizado para usar la funcionalidad zeroFill de uSevenSegmentLib recién añadida.
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje