#include <Wire.h>
#include <RTCIib.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
RTC_DS1307 rtc; //Ubah ke DS1307 karena wokwi menggunakan modul ini
LiquidCrystal_I2C lcd[...., 16,2]; //Alamat I2C ...., 16 kolom dan 2 baris
Servo feederServo;
const int servoPin - 9; // Pin untuk servo
const int feedinghours[] - {8, 12, 16, 20}; //Waktu pemberian makan (jam)
const int numfeedings - sizeof{feedinghours} / sizeof{feedinghours[0]};
int nextfeedingIndex - 0;
void setup {}{
Serial.begin(9600);
If (|rtc.begin()) {
Serial.println("RTC tidak terdeteksi");
while (1);
}
//Set waktu RTC (hanya untuk simulasi di Wokwi)
rtc.adjust(DateTime(F(_DATE_), F(_TIME_)));
lcd.inft();
lcd.backlight();
feederServo.attach(servoPin);
feederServo.write(0); //Posisi awal servo
}
void loop{}
DateTime row = rtc.row();
//Tampilkan waktu saat ini
Lcd.setCursor(0,0);
Lcd.print("Waktu: ");
printDigits(row.hour());
Lcd.print(':');
printDigits(row.minute());
// Cari waktu pemberian makan berikutnya
int nextFeeding - feedinghours(nextfeedingIndex);
// Tampilkan waktu pemberian makan berikutnya
lcd.setCursor(0,1);
lcd.print("feed: ");
printDigits(nextFeeding);
lcd.print("00");
// Cek apakah sudah waktunya memberi makan
if (now.hour() -- nextFeeding)
feedFish();
nextFeedingindex - (nextFeedingIndex - 1)
}
delay(1000); //Tunggu 1 detik
void feedFish() {
Lcd.clear();
Lcd.print("Memberi makan...");
feederServo.write(90); // Putar servo ke posisi 90 derajat
delay(1000);
feederServo.write(0); // Kembalikan ke posisi awal
delay(1000); // Tampilkan pesan selama 3 detik
Lcd.clear();
}
void printDigits(int digits) {
if (digits <10) (10
lcd.print('0');
)
lcd.print(digits);
}