#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
}