#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 15 // Pin yang terhubung dengan DHT22
#define DHTTYPE DHT22 // DHT 22 (AM2302)
const int SOLENOID_PIN = 5; // Pin untuk mengontrol solenoid (LED)
const int LCD_COLUMNS = 16;
const int LCD_ROWS = 2;
LiquidCrystal_I2C lcd(0x27, LCD_COLUMNS, LCD_ROWS); // Ganti alamat I2C jika berbeda
DHT dht(DHTPIN, DHTTYPE);
void setup() {
pinMode(SOLENOID_PIN, OUTPUT); // Mengatur GPIO 5 sebagai output
Serial.begin(115200); // Memulai komunikasi serial
dht.begin(); // Menginisialisasi DHT22
lcd.init(); // Menginisialisasi LCD
lcd.backlight(); // Mengaktifkan backlight LCD
// Menampilkan pesan awal di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("DHT22 & Solenoid");
lcd.setCursor(0, 1);
lcd.print("Initializing...");
delay(2000); // Menunggu selama 2 detik
}
void loop() {
float temperature = dht.readTemperature(); // Membaca suhu
if (isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Failed to read");
lcd.setCursor(0, 1);
lcd.print("from DHT sensor");
delay(2000);
return;
}
Serial.println("Temp: " + String(temperature, 2) + "°C");
Serial.println("---");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature, 2);
lcd.print(" C");
if (temperature >= 25) {
digitalWrite(SOLENOID_PIN, HIGH); // Menyalakan solenoid (LED)
Serial.println("Solenoid ON");
lcd.setCursor(0, 1);
lcd.print("Solenoid: ON");
} else if (temperature <= 20) {
digitalWrite(SOLENOID_PIN, LOW); // Mematikan solenoid (LED)
Serial.println("Solenoid OFF");
lcd.setCursor(0, 1);
lcd.print("Solenoid: OFF");
}
delay(2000); // Tunggu selama 2 detik sebelum membaca ulang
}