#include <Wire.h>
#include "CTBot.h"
CTBot myBot;
#include <RTClib.h>
RTC_DS1307 rtc;
byte tanggal, bulan, jam, menit, detik;
int tahun;
#include <EEPROM.h>
byte jam1, menit1, jam2, menit2;
#include <ESP32Servo.h>
Servo myServo;
String ssid = "Wokwi-GUEST";
String pass = "";
String token = "6630410622:AAGUTqBmxwbLP61SxHPpkHBZ64yVhmbt-_k";
int buttonPinOn = 2; // pin untuk tombol ON
int buttonPinOff = 5; // pin untuk tombol OFF
int pos = 0; // posisi awal servo
bool servoOn = false; // status servo
void setup() {
Serial.begin(115200);
Serial.println("Memulai Koneksi...");
myBot.wifiConnect(ssid, pass);
myBot.setTelegramToken(token);
if (myBot.testConnection())
Serial.println("\nKoneksi Ke Telegram BOT Berhasil!");
else
Serial.println("\nTidak Terkoneksi Ke Telegram BOT");
EEPROM.begin(512);
jam1 = EEPROM.read(1);
menit1 = EEPROM.read(2);
jam2 = EEPROM.read(3);
menit2 = EEPROM.read(4);
Serial.println(String() + "JADWAL1: " + jam1 + ":" + menit1);
Serial.println(String() + "JADWAL2: " + jam2 + ":" + menit2);
delay(3000);
if (!rtc.begin()) {
Serial.println("RTC Bermasalah, Silakan cek Koneksi");
Serial.flush();
abort();
} // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
myServo.attach(14); // hubungkan servo ke pin GPIO 14 pada ESP32
pinMode(buttonPinOn, INPUT);
pinMode(buttonPinOff, INPUT);
}
void loop() {
// Baca status tombol ON
if (digitalRead(buttonPinOn) == HIGH && !servoOn) {
servoOn = true;
}
// Baca status tombol OFF
if (digitalRead(buttonPinOff) == HIGH && servoOn) {
servoOn = false;
}
// Kontrol servo berdasarkan status
if (servoOn) {
// Gerakkan servo dari 0 derajat ke 180 derajat
for (pos = 0; pos <= 180; pos += 1) {
myServo.write(pos);
delay(15);
}
delay(1000); // Tunda 1 detik
// Gerakkan servo dari 180 derajat ke 0 derajat
for (pos = 180; pos >= 0; pos -= 1) {
myServo.write(pos);
delay(15);
}
delay(1000); // Tunda 1 detik
} else {
// Jika servo dimatikan, tetapkan posisi ke 0
myServo.write(0);
delay(500);
}
DateTime now = rtc.now();
tanggal = now.day();
bulan = now.month();
tahun = now.year();
jam = now.hour();
menit = now.minute();
detik = now.second();
Serial.println(String() + tanggal + "-" + bulan + "-" + tahun );
Serial.println(String() + jam + ":" + menit + ":" + detik);
Serial.println();
}