#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
const int digitPins[] = {2, 3, 4, 5}; // Define digit pins for 7-segment display
const int segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; // Define segment pins for 7-segment display
void setup() {
Serial.begin(9600);
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
digitalWrite(digitPins[i], HIGH); // Set all digits off initially
}
for (int i = 6; i <= 13; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, LOW); // Set all segments off initially
}
}
void loop() {
displayDigit(2, 0); // Menampilkan digit 2 pada digit pertama (posisi 0)
delay(500);
DateTime now = rtc.now();
int hours = now.hour();
int minutes = now.minute();
Serial.print("Hours: ");
Serial.println(hours);
Serial.print("Minutes: ");
Serial.println(minutes);
// Display hours
int tensHours = hours / 10;
int unitsHours = hours % 10;
displayDigit(tensHours, 0);
displayDigit(unitsHours, 1);
delay(500);
// Display minutes
int tensMinutes = minutes / 10;
int unitsMinutes = minutes % 10;
displayDigit(tensMinutes, 2);
displayDigit(unitsMinutes, 3);
delay(500);
}
void displayDigit(int digit, int position) {
digitalWrite(digitPins[position], LOW);
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], (digit & (1 << i)) != 0);
}
delay(1);
digitalWrite(digitPins[position], HIGH);
}