#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
// codingan LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16 , 2);
// codingan servo
#include <ESP32Servo.h>
const int servoPin = 5;
Servo mekanik;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
//codingan servo
mekanik.attach(servoPin);
mekanik.write(0);
//codingan LCD
lcd.init();
lcd.backlight();
lcd.clear();
// Codingan RTC
Wire.begin();
if(!rtc.begin()){
Serial.println("RTC TIDAK TERHUBUNG");
lcd.setCursor(0,0);
lcd.print("RTC Tidak KONEK");
while(1);
}
lcd.clear();
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
DateTime now = rtc.now();
int tahun = now.year();
int tanggal = now.day();
int bulan = now.month();
int jam = now.hour();
int menit = now.minute();
int detik = now.second();
//Codingan LCD
lcd.setCursor(0,0);
lcd.print(String()+ "Tang.;" + tanggal + "-" + bulan + "-" + tahun );
lcd.setCursor(0,1);
lcd.print(String() + "Waktu:" + jam + ":" + ":" + menit + ":" + detik + "");
Serial.println(String() + "Tanggal :" + tanggal + "-" + bulan + "-" + tahun);
Serial.println(String() + "Waktu :" + jam + ":" + menit + ":" +detik);
Serial.println();
//jadwal pakan pagi
if ((jam==9) && (menit==15) && (detik==1)){
pakanpagi();
}
if ((jam==9) && (menit==15) && (detik==10)){
pakansiang();
}
if ((jam==9) && (menit==15) && (detik==20)){
pakanmalam();
}
delay(1000);
}
//coding servo
void pakanpagi(){
lcd.clear();
lcd.print("PAKAN PAGI...");
mekanik.write(180);
delay(3000);
mekanik.write(0);
lcd.clear();
}
void pakansiang(){
lcd.clear();
lcd.print("PAKAN SIANG...");
mekanik.write(90);
delay(3000);
mekanik.write(0);
lcd.clear();
}
void pakanmalam(){
lcd.clear();
lcd.print("PAKAN MALAM...");
mekanik.write(45);
delay(3000);
mekanik.write(0);
lcd.clear();
}