#include <RTClib.h>
#include <LiquidCrystal_I2C.h> // Library for LCD
#include "DHT.h"

#define DHT22_PIN 2
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows
DHT dht22(DHT22_PIN, DHT22);
int trigPin = 4;
int echoPin = 3;
int motorPin = 5;

float jarak_us, jarak_cm;
void setup () {
  Serial.begin(9600);
  lcd.init();         //initialize the lcd
  lcd.backlight();    //open the backlight 
  pinMode(trigPin, OUTPUT); //set triggerPin to Output
  pinMode(echoPin, INPUT);  //set echoPin to Input
  pinMode(motorPin, OUTPUT);//set pin relay

  dht22.begin();
  // SETUP RTC MODULE
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    Serial.flush();
    while (1);
  }

  // automatically sets the RTC to the date & time on PC this sketch was compiled
  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

}

void loop () {
  // generate 10-microsecond pulse to TRIG pin
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  //Hitung Jarak
  jarak_us = pulseIn(echoPin, HIGH);
  jarak_cm = 0.017 * jarak_us;
  int pakanPersen = jarak_cm/300 * 100;


  int tempC = dht22.readTemperature();  //Hitung Temp
  DateTime now = rtc.now();

  //LCD Tanggal
  lcd.setCursor(0, 0);
  lcd.print(now.day(), DEC);
  lcd.print('/');
  lcd.print(now.month(), DEC);
  lcd.print('/');
  lcd.print(now.year(), DEC);

  //LCD Jam
  lcd.setCursor(11, 0);
  lcd.print(now.hour(), DEC);
  lcd.print(':');
  lcd.print(now.minute(), DEC);

  //LCD Suhu
  lcd.setCursor(13, 1);
  lcd.print(tempC);
  lcd.setCursor(15, 1);
  lcd.print("C");

  //LCD Pakan %
  lcd.setCursor(0, 1);
  lcd.print("Pakan:");
  lcd.print(pakanPersen);
  lcd.setCursor(8, 1);
  lcd.print("%");
  
  Serial.print(now.second(), DEC);
  Serial.print(" ");
  //Relay
  if(now.second() == 30){
    digitalWrite(motorPin, HIGH);
    delay(5000);
    digitalWrite(motorPin, LOW);
    delay(5000);

  }
  delay(1000); // delay 1 seconds
}
$abcdeabcde151015202530fghijfghij
GND5VSDASCLSQWRTCDS1307+