#include <Wire.h>
#include <RTClib.h>
RTC_DS3231 rtc;
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10}; // Tambahkan pin 10 untuk titik desimal
void setup() {
for (int i = 0; i < 9; i++) { // Sesuaikan jumlah pin yang sekarang adalah 9
pinMode(segmentPins[i], OUTPUT);
}
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, let's set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
displayDigit(now.hour() / 10);
delay(5);
clearDisplay();
displayDigit(now.hour() % 10);
delay(5);
clearDisplay();
displaySeparator();
delay(5);
clearDisplay();
displayDigit(now.minute() / 10);
delay(5);
clearDisplay();
displayDigit(now.minute() % 10);
delay(5);
clearDisplay();
displaySeparator();
delay(5);
clearDisplay();
displayDigit(now.second() / 10);
delay(5);
clearDisplay();
displayDigit(now.second() % 10);
delay(5);
clearDisplay();
}
void displayDigit(int digit) {
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], (digit >> i) & 1);
}
}
void displaySeparator() {
digitalWrite(segmentPins[7], HIGH);
}
void clearDisplay() {
for (int i = 0; i < 8; i++) {
digitalWrite(segmentPins[i], LOW);
}
}