//Koding LCD --------------------------------------->
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Menggunakan library LiquidCrystal_I2C untuk mengontrol LCD 20x4 dengan alamat I2C 0x27.
//Koding DHT22 --------------------------------------->
#include "DHT.h"// Menggunakan library DHT untuk membaca data dari sensor DHT22 yang terhubung ke pin 5.
#define DHTPIN 5 // Pin 5 yang digunakan untuk koneksi sensor DHT22.
#define DHTTYPE DHT22 //Tipe sensor DHT (DHT22).
DHT dht(DHTPIN, DHTTYPE);
//Koding Output --------------------------------------->
// Inisialisasi variabel dan pin untuk aktuator.
int pinBuzzer = 8; // Pin buzzer
int Lampu = 9; // Pin lampu
int Kipas = 6; // Pin kipas
void setup() {
//inisiasi pin output
pinMode(pinBuzzer, OUTPUT); // Set pin buzzer sebagai output
pinMode(Lampu, OUTPUT); // Set pin lampu sebagai output
pinMode(Kipas, OUTPUT); // Set pin kipas sebagai output
//inisiasi sensor dht22
dht.begin(); // Inisialisasi sensor DHT22
//inisiasi serial monitor
Serial.begin(9600); // Inisialisasi komunikasi serial
Serial.println("Selamat Datang "); //mencetak teks
Serial.println("Hasyim Husein Alhabsji");//mencetak teks
Serial.println("Nim : 220605110180");//mencetak teks
Serial.println("");
// inisiasi lcd20x4
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight LCD
lcd.setCursor(5,0);// mengatur tampilan di lcd
lcd.print("Smart cage"); //menampilkan teks di lcd
lcd.setCursor(6,1); // mengatur tampilan di lcd
lcd.print("Hasyim");// menampilkan teks di lcd
lcd.setCursor(7,2);//memgatur tampilan di lcd
lcd.print("180");// menampilkan tampilan di lcd
delay(5000);//delay 5 detik
lcd.clear();// membersihkan tampilan pada lcd
delay(2000); // delay 2 detik
}
void loop() {
// Membaca suhu dan kelembapan
float kelembapan = dht.readHumidity();
float suhu = dht.readTemperature();
Serial.print("Kelembapan: "); // mencetak teks
Serial.print(kelembapan);// mencetak kelembapan
Serial.print(" %, Suhu: "); // mencetak teks
Serial.print(suhu);//mencetak suhu
Serial.print("°C, "); //mencetak teks
lcd.setCursor(0,0);//mengatur posisi teks
lcd.print("Suhu : " + String(suhu) +"C"); // Menampilkan suhu pada LCD
lcd.setCursor(0,1);//megatur posisi teks
lcd.print("%Kelembapan : " + String(kelembapan) + "%"); // Menampilkan kelembapan pada LCD
//jika suhu dibawah sama dengan 26 maka
if(suhu <= 26.0){
digitalWrite(Lampu, HIGH); // Nyalakan lampu
digitalWrite(Kipas, LOW); // Matikan kipas
digitalWrite(pinBuzzer, HIGH); // Nyalakan buzzer
//looping untuk irama buzzer
for (int i = 0; i < 5; i++){
tone(8,800);//buzzer nyala
delay(200);
noTone(8);//buzzer mati
delay(200);
tone(8,800);
delay(200);
noTone(8);
delay(200);
tone(8,800);
delay(200);
noTone(8);
delay(200);
}
Serial.println("Suhu rendah");
lcd.setCursor(0,3);
lcd.print("Lampu menyala");
}
//jika suhu diatas sama dengan 31 maka
else if(suhu >= 31.0){
digitalWrite(Kipas, HIGH); // Nyalakan kipas
digitalWrite(Lampu, LOW); // Matikan lampu
digitalWrite(pinBuzzer, HIGH); // Nyalakan buzzer
//looping untuk irama buzzer
for (int i = 0; i < 5; i++){
tone(8,400);//buzzer menyala
delay(200);
noTone(8);//buzzer mati
delay(200);
tone(8,400);
delay(200);
noTone(8);
delay(200);
tone(8,400);
delay(200);
noTone(8);
delay(200);
}
Serial.println("Suhu Tinggi");//menampilkan teks suhu tinggi
lcd.setCursor(0,3); // mengatur posisi pada lcd
lcd.print("Kipas Menyala"); //menampilkan teks pada lcd
}
// ketika suhu diatas sama dengan 27 dan suhu dibawah sama dengan 30 maka
else if(suhu >= 27.0 && suhu <= 30.0){
digitalWrite(Kipas, LOW); // Matikan kipas
digitalWrite(Lampu, LOW); // Matikan lampu
digitalWrite(pinBuzzer, LOW); // Matikan buzzer
noTone(8); // Hentikan nada pada buzzer
Serial.println("Suhu normal");//menampilkan teks
lcd.setCursor(0,3);// mengatur posisi lcd
lcd.print("Suhu Normal");//menampilkan teks pada lcd
}
delay(3000);//setiap 5 detik akan mengambil data baru
}