//======== Deklarasi Library-variabel-konstanta terkait modul TM1637 ========
#include <TM1637Display.h>
#define CLK 10 // deklarasi pin CLK terhubung ke pin 10 Arduino
#define DIO 11 // deklarasi pin DIO terhubung ke pin 11 Arduino
//Inisialisasi library TM1637Display dengan nama display
TM1637Display display(CLK, DIO); //inisialisasi objek "display"
uint8_t data[]={0xff,0xff,0xff,0xff }; //deklarasi var array data[], nyalakan semua
uint8_t blank[]={0x00,0x00,0x00,0x00 };//deklarasi var array blank[], matikan semua
int second, minute, hour; //deklarasi variabel detik, menit dan jam
int b_second; //menyimpan nilai detik sebelumnya untuk dibanding dg detik saat ini
int jam; //deklarasi variabel jam menyatukan jam dan menit
bool colonFlag = false; // deklarasi variabel tipe boolean
//======== Deklarasi Library-variabel-konstanta terkait modul DS3231 ========
#include <DS3231.h>
#include <Wire.h>
DS3231 myRTC; //pendefinisian myRTC menjadi objek dari DS3231
bool century = false; //penanda limpahan 1 abad dimatikan
bool h12Flag;//deklarasi var h12Flag, jika true maka mode jam 12h, jika false mode 24h
bool pmFlag; //deklarasi var pmFlag, jika true maka PM, jika false AM
//------------------------------------------------------------------------------
void setup() {
//== setting brightness dan clear TM1637
display.setBrightness(0x0f); //set kecerahan display
display.setSegments(data); //nyalakan semua segmen
delay(500);
display.clear(); //matikan semua segmen
//== setting brightness dan clear TM1637, set default jam = 21:30
Wire.begin(); //aktifkan protokol I2C
myRTC.setYear(23); //set tahun = 2023
myRTC.setMonth(10); //set bulan = 10 (Oktober)
myRTC.setDate(22); //set tanggal = 22
myRTC.setDoW(1); //set Date of Weak = 1
myRTC.setHour(21); //set jam = 21
myRTC.setMinute(30);//set menit = 30
myRTC.setSecond(0); //set detik = 0
myRTC.setClockMode(false); // set mode 24h
}
void loop() {
hour = myRTC.getHour(h12Flag, pmFlag);//baca status Jam beserta kedua flag
minute = myRTC.getMinute(); //baca status menit
jam = (hour*100) + minute ; //konversi sehingga nilai jam = 2130
second = myRTC.getSecond(); //baca status detik
if (b_second != myRTC.getSecond()) { colonFlag =! colonFlag; }
b_second = myRTC.getSecond();//salin ke b_second
//tampilkan jam & nyalakan/matikan colon
if(colonFlag) { display.showNumberDecEx(jam,0x40); } //nyalakan colon
else { display.showNumberDecEx(jam,0x00); } //matikan colon
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5