- 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.