#include <dht.h>
#include <Wire.h> // Memanggil library wire.h
#include <LiquidCrystal_I2C.h> // Memanggil library LCD dengan I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C(0x27) LCD dan Jenis LC
#define DATA_PIN 2 // Definisi Pin untuk DHT22
#define echoPin A0 // Deklarasi echo terhubung pada pin A0 HC-SR04
#define trigPin A1 // Deklarasi trig terhubung pada pin A1 HC-SR04
#define led 9 // Deklarasi LED terhubung pada pin 9
#define humidifierLED 8 // Deklarasi pin untuk mengontrol LED sebagai humidifier
dht DHT; // Buat DHT object
// defines variables
long durasi; // variabel durasi suara
int jarak, jarak_max = 20; // variabel untuk mengukur jarak
void setup() {
Serial.begin(9600);
lcd.init(); // instruksi untuk memulai LCD
lcd.backlight(); // instruksi untuk mengaktifkan lampu latar LCD
pinMode(trigPin, OUTPUT); // deklarasi pin trig sebagai output
pinMode(echoPin, INPUT); // deklarasi pin echo sebagai input
pinMode(led, OUTPUT); // deklarasi LED sebagai output
pinMode(humidifierLED, OUTPUT); // deklarasi pin humidifier sebagai output
digitalWrite(humidifierLED, LOW); // memastikan humidifier mati pada awalnya
}
void loop() {
int readData = DHT.read22(DATA_PIN); // baca Data dari sensor
float t = DHT.temperature; // Ambil nilai Suhu
float h = DHT.humidity; // Ambil nilai Kelembaban
// Mencetak output ke Serial monitor
Serial.print("SUHU = ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(" KELEMBABAN = ");
Serial.print(h);
Serial.println(" % ");
// Kontrol Humidifier
bool humidifierStatus = false;
if (h < 45) { // Jika kelembaban di bawah 45%
digitalWrite(humidifierLED, HIGH); // Nyalakan humidifier (LED)
humidifierStatus = true;
} else if (h > 60) { // Jika kelembaban di atas 60%
digitalWrite(humidifierLED, LOW); // Matikan humidifier (LED)
humidifierStatus = false;
}
digitalWrite(trigPin, LOW); // Trig tidak aktif
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Trig aktif
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Membaca sinyal masuk pada echo
durasi = pulseIn(echoPin, HIGH);
// Menghitung Jarak
jarak = durasi * 0.034 / 2; // Rumus menghitung jarak ultrasonik
lcd.setCursor(0,0); // Karakter dimulai dari kolom 0 baris 0
lcd.print("Jarak:"); // Karakter yang akan ditampilkan pada LCD
lcd.print(jarak); // Menampilkan data jarak pada LCD
lcd.print(" cm");
Serial.print("Jarak : ");
Serial.print(jarak);
Serial.println(" cm");
delay(1000);
if (jarak < jarak_max){ // Instruksi untuk mengaktifkan LED jika jarak benda kurang dari 20 cm (jarak_max)
digitalWrite(led, HIGH);
lcd.setCursor(0,1); // Menggunakan baris kedua
lcd.print("Out of Range "); // Pastikan menghapus karakter sebelumnya
}
else {
digitalWrite(led, LOW); // Instruksi untuk mematikan LED jika jarak benda lebih dari 20 cm (jarak_max)
lcd.setCursor(0,1); // Menggunakan baris kedua
lcd.print("In Range"); // Pastikan menghapus karakter sebelumnya
}
// Menampilkan status humidifier di baris kedua LCD
lcd.setCursor(0,1); // Menggunakan baris kedua
if (humidifierStatus) {
lcd.print("Humidifier: ON ");
} else {
lcd.print("Humidifier: OFF");
}
delay(1000);
}