#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
DHT dht(2, DHT22);
#define DHTPIN 10
#define DHTTYPE DHT22
DHT dht2(DHTPIN, DHTTYPE);
int SERVO_PIN = 11;
Servo servo;
int SERVO_PIN2 = 9;
Servo servo2;
int TRIG_PIN = 8;
int ECHO_PIN = 7;
float duration_us, distance_cm;
float suhu, kelembaban;
#define pinLDR A0
const float GAMMA = 0.7; //nilai ketetapan gama untuk mencari tingkat kecerahan(lux)
const float RL10 = 50;
int threshold = 500;
float temp;
#define buton 6
#define led 4
#define led2 3
#define buton2 5
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(13, OUTPUT);
dht.begin();
dht2.begin();
servo.attach(SERVO_PIN);
servo.write(0);
servo2.attach(SERVO_PIN2);
servo.write(0);
pinMode(buton, INPUT);
pinMode(buton2, INPUT);
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration_us = pulseIn(ECHO_PIN, HIGH);
distance_cm = 0.017 * duration_us;
suhu = dht.readTemperature();
kelembaban = dht.readHumidity();
int lembab = 60;
int lightValue = analogRead(pinLDR);
temp = dht2.readTemperature();
Serial.print("distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
lcd.setCursor(0, 1);
lcd.print(" Lembab ");
lcd.print(kelembaban);
lcd.print("% ");
delay(500);
//SERVO ULTRASONIK
if (distance_cm > 290){
servo.write(90);
lcd.setCursor(0, 0);
lcd.print(" Air: full ");
delay(20);
}
else{
servo.write(0);
lcd.setCursor(0, 0);
lcd.print(" Air : low ");
delay(20);
}
//SERVO DHT
if (kelembaban > lembab){
servo2.write(90);
delay(20);
}
else{
servo2.write(0);
delay(20);
}
if (digitalRead(buton) == HIGH) {
// Tombol ditekan, aktifkan LED berdasarkan nilai LDR
if (lightValue > threshold && temp > 30.0) {
digitalWrite(led, HIGH);
lcd.setCursor(0, 2);
lcd.print(" CAHAYA:GELAP ");
lcd.setCursor(0, 3);
lcd.print(" SUHU:");
lcd.print(temp);
} else {
// LDR mendeteksi cahaya cukup tinggi, matikan semua LED
digitalWrite(led, LOW);
lcd.setCursor(0, 2);
lcd.print(" CAHAYA:TERANG ");
lcd.setCursor(0, 3);
lcd.print(" SUHU:");
lcd.print(temp);
}
} else if (digitalRead(buton2) == HIGH){
if (lightValue > threshold && temp > 30.0) {
digitalWrite(led2, HIGH);
lcd.setCursor(0, 2);
lcd.print(" CAHAYA:GELAP ");
lcd.setCursor(0, 3);
lcd.print(" SUHU:");
lcd.print(temp);
} else {
// LDR mendeteksi cahaya cukup tinggi, matikan semua LED
digitalWrite(led2, LOW);
lcd.setCursor(0, 2);
lcd.print(" CAHAYA:TERANG ");
lcd.setCursor(0, 3);
lcd.print(" SUHU:");
lcd.print(temp);
}
}else {
digitalWrite(led, LOW);
digitalWrite(led2, LOW);
}
}