#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int ledPin = 9;
const int potPin = A0;
void setup() {
Serial.begin(9600);
Wire.begin();
rtc.begin();
pinMode(ledPin, OUTPUT);
analogWrite(ledPin, 0);
lcd.begin(20, 4);
lcd.backlight();
lcd.clear();
}
void loop() {
// Membaca nilai dari potensiometer (0-1023)
int potValue = analogRead(potPin);
// Mengatur nilai dimming LED berdasarkan nilai potensiometer
int ledValue = map(potValue, 0, 1023, 0, 255);
analogWrite(ledPin, ledValue);
// Menampilkan nilai potensiometer dan dimming LED di Serial Monitor
Serial.print("Analog : ");
Serial.println(potValue);
Serial.print("LED : ");
Serial.println(ledValue);
Serial.print("Datetime : ");
printDateTime();
// Menampilkan nilai potensiometer dan dimming LED di LCD I2C
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Analog : ");
lcd.print(potValue);
lcd.setCursor(0, 1);
lcd.print("LED : ");
lcd.print(ledValue);
lcd.setCursor(0, 2);
lcd.print("Tanggal : ");
lcd.print(rtc.now().timestamp(DateTime::TIMESTAMP_DATE));
lcd.setCursor(0, 3);
lcd.print("Waktu : ");
lcd.print(rtc.now().timestamp(DateTime::TIMESTAMP_TIME));
delay(500);
}
void printDateTime() {
DateTime now = rtc.now();
Serial.print(now.timestamp(DateTime::TIMESTAMP_DATE));
Serial.print(" ");
Serial.println(now.timestamp(DateTime::TIMESTAMP_TIME));
}