#include <ESP32Servo.h> // Menambahkan library motor servo untuk ESP32
#include <Wire.h>
#include <RTClib.h> // Menggunakan library RTClib
RTC_DS1307 rtc; // Inisialisasi objek RTC
// Pin Definitions
#define RELAY_PIN 2 // Pin untuk relay (sesuai gambar)
#define SERVO_PIN 32 // Pin untuk servo (sesuai gambar)
// Servo object
Servo myServo; // Memanggil fungsi yang ada di ESP32Servo dan dibuat variablenya
void setup() {
// Setup pin mode untuk relay
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // Awalnya relay dalam keadaan OFF
// Setup servo
myServo.attach(SERVO_PIN); // Attach servo ke pin
myServo.write(0); // Posisi awal servo (0 derajat)
Serial.begin(115200);
Serial.println("Setup complete. Relay is OFF, Servo at 0 degrees.");
// Inisialisasi RTC
if (!rtc.begin()) {
Serial.println("RTC tidak ditemukan!");
while (1);
}
// Set waktu awal jika diperlukan (hanya sekali)
// rtc.adjust(DateTime(2023, 9, 20, 13, 45, 0)); // Set jam, menit, detik (2023-09-20 13:45:00)
}
void loop() {
// Ambil waktu dari RTC
DateTime now = rtc.now();
Serial.print("Current Time: ");
Serial.print(now.hour());
Serial.print(":");
Serial.println(now.minute());
// Nyalakan relay pada jam 13:45 dan matikan pada jam 13:46
if (now.hour() == 14 && now.minute() == 25) {
digitalWrite(RELAY_PIN, HIGH); // Nyalakan relay
myServo.write(90); // Pindahkan servo ke 90 derajat
Serial.println("Relay ON, Servo moved to 90 degrees");
} else if (now.hour() == 14 && now.minute() == 26) {
digitalWrite(RELAY_PIN, LOW); // Matikan relay
myServo.write(0); // Kembalikan servo ke 0 derajat
Serial.println("Relay OFF, Servo moved to 0 degrees");
}
delay(1000); // Delay 1 detik untuk menghindari pembacaan berulang
}