#include <LiquidCrystal_I2C.h> //library untuk LCD I2C
#include <DHT.h> // library untuk DHT
#include <Servo.h> //library untuk servo
#define DHTPIN 4 // pin DHT
#define DHTTYPE DHT22 //inisialisasi DHT
DHT dht(DHTPIN, DHT22);
Servo myservo; //initial motor servo
const int TrigPin = 8; //untuk inisialisasi TrigPin pada pin 8
const int EchoPin = 9; //untuk inisialisasi EchoPin pada pin 9
int buzzer = 13; //initial buzzer
LiquidCrystal_I2C lcd(0x27,20,4); //LCD
float hum; //nilai humidity tanah
float timer, jarak; //inisialisasi nilai timer dan jarak ketinggian irigasi
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(2,0);
lcd.print("INFORMASI KONDISI");
lcd.setCursor(0,1);
lcd.print("Kelembaban:");
lcd.setCursor(11,1);
lcd.print(hum);
lcd.setCursor(16,1);
lcd.print("%");
pinMode(EchoPin, INPUT); //pin Echo sebagai input
pinMode(TrigPin, OUTPUT); //pin Trigger sebagai Output
myservo.attach(3); //Setup pada servo, PWM pada pin 3 sebagai actuator
}
void loop() {
hum = dht.readHumidity(); //pembacaan kelembaban
lcd.setCursor(11,1);
lcd.print(hum);
tone(buzzer, 250); //buzzer nyala pada 250HZ
digitalWrite(TrigPin, LOW); //fungsi perintah pin digital saat kondisi low
delayMicroseconds(2); //sebagai delay saat pembacaan low TrigPin
digitalWrite(TrigPin, HIGH); //fungsi perintah pin digital
delayMicroseconds(10); //sebagai delay saat pembacaan high TrigPin
digitalWrite(TrigPin, LOW); //fungsi perintah pin digital
timer = pulseIn(EchoPin,HIGH); //waktu ketika menerima gelombang input
jarak = timer/58; //perhitungan variable jarak terhadap variable waktu input
delay(100);
lcd.setCursor (0,3);
lcd.print("Kedalaman Air:");
lcd.setCursor (14,3);
lcd.print(jarak); //sebagai pembacaan kedalaman air
{if (hum <= 30 ) //ketika 30% humidity maka actuator akan terbuka
{ myservo.write(90); //actuator kondisi membuka
lcd.setCursor (0,2);
lcd.print("Irigasi Terbuka");
delay(1000);
}
else //ketika 30% humidity maka actuator akan tertutup
{
myservo.write(0); //actuator kondisi tertutup
lcd.setCursor (0,2);
lcd.print("Irigasi Tertutup");
delay(1000);
}}}