Arduino - Relógio de 7 Segmentos

Neste tutorial, vamos aprender a fazer um relógio de 7 segmentos usando o Arduino. Em detalhes, vamos aprender dois casos:

Você também pode usar o módulo RTC DS1307 no lugar do módulo RTC DS3231 alterando uma única linha de código. Veja DS3231 vs DS1307

Sobre o display TM1637 e os módulos RTC DS3231 e DS1307

Se você ainda não conhece o display de 7 segmentos TM1637, o DS3231 e o DS1307 (pinagem, como funcionam, como programar...), aprenda sobre eles nos tutoriais a seguir:

Instalar as Bibliotecas TM1637 e RTC

  • Vá até o ícone Libraries na barra à esquerda do Arduino IDE.
  • Pesquise “TM1637” e encontre a biblioteca TM1637Display de Avishay Orpaz
  • Clique no botão Install.
Biblioteca do display de 7 segmentos de 4 dígitos TM1637 para Arduino
  • Pesquise “RTClib” e encontre a biblioteca RTC da Adafruit. Esta biblioteca funciona tanto com o DS3231 quanto com o DS1307
  • Clique no botão Install para instalar a biblioteca RTC.
Biblioteca RTC para Arduino
  • Pode ser que seja pedido para você instalar algumas outras dependências de biblioteca
  • Clique no botão Install All para instalar todas as dependências de biblioteca.
Biblioteca de dependência RTC para Arduino

Diagrama de Ligação

  • O diagrama de ligação entre o Arduino, o display de 7 segmentos de 4 dígitos TM1637 e o módulo RTC DS3231.
Diagrama de Ligação do Arduino com DS3231 e display de 7 segmentos

This image is created using Fritzing. Click to enlarge image

  • O diagrama de ligação entre o Arduino, o display de 7 segmentos de 4 dígitos TM1637 e o módulo RTC DS1307.
Diagrama de Ligação do Arduino com DS1307 e display de 7 segmentos

This image is created using Fritzing. Click to enlarge image

Código Arduino - Mostrando minutos e segundos no display de 7 segmentos

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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; } }

Passos Rápidos

  • Copie o código acima e abra no Arduino IDE
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino
  • Confira o resultado no Serial Monitor e no display TM1637.

Explicação do Código

Leia a explicação linha por linha nos comentários do código-fonte!

Se você quiser usar o módulo RTC DS1307 no lugar do módulo RTC DS3231, basta comentar/descomentar uma linha indicada no código

Código Arduino - Mostrando hora e minuto no display de 7 segmentos

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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; } }

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!