Arduino - reloj de 7 segmentos

En este tutorial, vamos a aprender cómo hacer un reloj de 7 segmentos usando Arduino. En detalle, aprenderemos dos casos:

También puedes usar el módulo RTC DS1307 en lugar del módulo RTC DS3231 cambiando una sola línea de código. Consulte DS3231 vs DS1307

Acerca de la pantalla TM1637, módulos RTC DS3231 y DS1307

Si no conoces la pantalla de 7 segmentos TM1637, DS3231 y DS1307 (disposición de pines, cómo funciona, cómo programar ...), aprende sobre ellos en los siguientes tutoriales:

Instalar bibliotecas TM1637 y RTC

  • Navega hasta el icono de Bibliotecas en la barra izquierda del IDE de Arduino.
  • Busca “TM1637”, luego encuentra la biblioteca TM1637Display de Avishay Orpaz
  • Haz clic en el botón Instalar.
Biblioteca de Arduino para pantalla de 4 dígitos de 7 segmentos TM1637
  • Busca “RTClib”, luego encuentra la librería RTC de Adafruit. Esta librería funciona tanto con DS3231 como con DS1307
  • Haz clic en el botón Instalar para instalar la librería RTC.
Biblioteca RTC de Arduino
  • Es posible que se le solicite instalar algunas dependencias de otras bibliotecas.
  • Haga clic en el botón Instalar todo para instalar todas las dependencias de la biblioteca.
Librería de dependencias RTC para Arduino

Diagrama de Cableado

  • El diagrama de cableado entre Arduino, el display TM1637 de 4 dígitos de 7 segmentos y el módulo RTC DS3231.
Diagrama de cableado de Arduino DS3231 y pantalla de 7 segmentos

This image is created using Fritzing. Click to enlarge image

  • El diagrama de cableado entre Arduino, la pantalla TM1637 de 4 dígitos de 7 segmentos y el módulo RTC DS1307.
Diagrama de cableado de Arduino DS1307 y pantalla de 7 segmentos

This image is created using Fritzing. Click to enlarge image

Código de Arduino - Mostrando minutos y segundos en la pantalla de 7 segmentos

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-7-segment-clock */ #include <TM1637Display.h> #include <RTClib.h> // define the connections pins #define CLK 9 #define DIO 10 // create a display object of type TM1637Display TM1637Display display = TM1637Display(CLK, DIO); RTC_DS1307 rtc; // RTC_DS3231 rtc; // uncomment this line and comment the above line if using DS3231 module unsigned long time_m = 0; // the variable to store minute unsigned long time_s = 0; // the variable to store second unsigned long last_s = 0; // the variable to store the last updated second void setup() { Serial.begin(9600); display.clear(); display.setBrightness(7); // set the brightness to 7 (0:dimmest, 7:brightest) // SETUP RTC MODULE if (!rtc.begin()) { Serial.println("Couldn't find RTC"); Serial.flush(); while (true) ; } // automatically sets the RTC to the date & time on PC this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } void loop() { DateTime now = rtc.now(); time_m = now.minute(); time_s = now.second(); if (time_s != last_s) { // only update if changed unsigned long time = time_m * 100 + time_s; display.showNumberDecEx(time, 0b11100000, false, 4, 0); Serial.print(time_m); Serial.print(":"); Serial.println(time_s); last_s = time_s; } }

Pasos R\u00e1pidos

  • Copia el código anterior y ábrelo con el IDE de Arduino
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código al Arduino
  • Consulta el resultado en el Monitor Serial y en la pantalla TM1637

Explicación del código

¡Lee la explicación línea por línea en los comentarios del código fuente!

Si quieres usar el módulo RTC DS1307 en lugar del módulo RTC DS3231, solo necesitas comentar/descomentar una línea especificada en el código.

Código de Arduino - Mostrar la hora y el minuto en la pantalla de 7 segmentos

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-7-segment-clock */ #include <TM1637Display.h> #include <RTClib.h> // define the connections pins #define CLK 9 #define DIO 10 // create a display object of type TM1637Display TM1637Display display = TM1637Display(CLK, DIO); RTC_DS1307 rtc; // RTC_DS3231 rtc; // uncomment this line and comment the above line if using DS3231 module unsigned long time_h = 0; // the variable to store hour unsigned long time_m = 0; // the variable to store minute unsigned long last_m = 0; // the variable to store the last updated hour void setup() { Serial.begin(9600); display.clear(); display.setBrightness(7); // set the brightness to 7 (0:dimmest, 7:brightest) // SETUP RTC MODULE if (!rtc.begin()) { Serial.println("Couldn't find RTC"); Serial.flush(); while (true) ; } // automatically sets the RTC to the date & time on PC this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } void loop() { DateTime now = rtc.now(); time_h = now.hour(); time_m = now.minute(); if (time_m != last_m) { // only update if changed unsigned long time = time_h * 100 + time_m; display.showNumberDecEx(time, 0b11100000, false, 4, 0); Serial.print(time_h); Serial.print(":"); Serial.println(time_m); last_m = time_m; } }

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!