#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include "RTClib.h"
#define pinServoMakanan 32
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x3F, 16, 2);//coba juga 0x27
Servo servoMakanIkan;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup() {
Serial.begin(115200);
servoMakanIkan.attach(32);
servoMakanIkan.write(0);
Wire.begin();
rtc.begin();
//DateTime dt(2020, 10, 17, 20, 03, 0, 7); // set tanggal dan waktu (format): tahun, bulan,tanggal, jam, menit, detik, hari (1=minggu, 7=sabtu)
//rtc.setDateTime(dt);
Wire.beginTransmission(0x3F);
if (Wire.endTransmission())
{
lcd = LiquidCrystal_I2C(0x27, 16, 2);
}
lcd.init();
lcd.backlight();
lcd.print("Pakan Ikan Auto");
lcd.setCursor(0, 3);
lcd.print(" DEA REINATA ");
delay(3000);
lcd.clear();
}
void loop() {
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
//rtc.convertTemperature();
lcd.setCursor(12, 1);
//lcd.print("T:");
lcd.setCursor(13, 1);
//lcd.print(now.temp(),DEC);//tampilan temperature
//lcd.print("C");
lcd.setCursor(9, 0);
lcd.println(daysOfTheWeek[now.dayOfTheWeek()]); //tampilan hari
lcd.setCursor(0, 1);
if(now.day()<10){
lcd.print("0");
}
lcd.print(now.day(), DEC); // tanggal
lcd.print("/");
if(now.month()<10){
lcd.print("0");
}
lcd.print(now.month(), DEC);//bulan
lcd.print("/");
lcd.print(now.year(), DEC); //tahun
lcd.setCursor(0, 0);
if(now.hour()<10){
lcd.print("0");
}
lcd.print(String(now.hour()));
lcd.print(":");
if(now.minute()<10){
lcd.print("0");
}
lcd.print(String(now.minute()));
lcd.print(":");
if(now.second()<10){
lcd.print("0");
}
lcd.print(String(now.second()));
//uint32_t epoch = now.get() % 86400;//hanya jam menit detik
if ((now.hour()==20 && now.minute()==40 && now.second()==00) ||
(now.hour()==20 && now.minute()==40 && now.second()==40)){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Waktunya Makan!!");
// 2 KALI BUKA PAKAN , BISA DI KURANGIN/TAMBAH
servoMakanIkan.write(180);
delay(1000);
servoMakanIkan.write(90);
delay(1000);
servoMakanIkan.write(180);
delay(1000);
servoMakanIkan.write(90);
delay(1000);
lcd.clear();
Serial.println();
delay(3000);
}}