Professional Documents
Culture Documents
com/diy-arduino/1472-make-a-digital-clock-using-4-bit-tm1637-led-
display-module-and-ds3231-rtc-module-interfacing-with-arduino-uno-kt808
code:
#include <TM1637Display.h>
#include <RTClib.h>
#include <Wire.h>
RTC_DS3231 rtc;
#define CLK 8
#define DIO 9
void setup () {
display.setBrightness(0xA);
display.setColon(true);
}
void loop () {
display.showNumberDec(t, true);
delay(1000);
Connection:
Ds3231
Gnd to gnd
Vcc to vcc
Gnd to gnd
Vcc to vcc
Clk to dig 8
Dio to dig 9
Another link:
https://create.arduino.cc/projecthub/pentiumcadiz/4-digit-rtc-clock-85068b
https://thecustomizewindows.com/2017/02/making-digital-clock-arduino-7-segment-4-digit-tm1637/
another code:
#include <Wire.h>
#include "TM1637.h"
#define CLK 6
#define DIO 7
#define brightness 6
#define keyHor 5
#define keyMin 4
#define keyPL 3
TM1637 tm1637(CLK,DIO);
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0);
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.endTransmission();
}
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
*minute = bcdToDec(Wire.read());
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
void setINT(){
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0x0E);
Wire.write(0x0);
Wire.endTransmission();
void blink() {
digitalWrite(13, !digitalRead(13));
flag = !flag;
tm1637.point(flag);
void setup() {
// Serial.begin(9600);
Wire.begin();
pinMode(13, OUTPUT);
pinMode(keyHor, INPUT_PULLUP);
pinMode(keyMin, INPUT_PULLUP);
pinMode(keyPL, INPUT_PULLUP);
tm1637.init();
tm1637.set(brightness);
setINT();
void loop(){
int8_t TimeDisp[4];
TimeDisp[0] = hour / 10;
second = 0;
hour++;
delay(200);
second = 0;
minute++;
delay(200);
tm1637.display(TimeDisp);