#include <WiFi.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
// Pin Sensor suhu ruangan pada heat collector
#define DHTPIN 18
#define DHTTYPE DHT22
// Pin Sensor Suhu pada tangki air
#define ONE_WIRE_BUS 19
// in pada LED
#define LED_PIN 23
// Instalisasi DHT22
DHT dht(DHTPIN, DHTTYPE);
// Instalisasi DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Instalisasi LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Mulai serial monitor
Serial.begin(115200);
// Mulai DHT
dht.begin();
// Mulai DS18B20
sensors.begin();
// Mulai LCD
lcd.begin(16, 2);
lcd.backlight();
// Intalasi LED
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// Membaca suhu dan kelembapan dari DHT22
float h = dht.readHumidity();
float t = dht.readTemperature(); // Celsius
// Membaca suhu dari DS18B20
sensors.requestTemperatures();
float dsTemp = sensors.getTempCByIndex(0); // Mengambil suhu dari sensor pertama
// Menampilkan hasil di Serial Monitor
Serial.print("Water Heat Collector - Suhu: ");
Serial.print(t);
Serial.print(" °C, Kelembapan: ");
Serial.print(h);
Serial.println(" %");
Serial.print("Tangki - Suhu: ");
Serial.print(dsTemp);
Serial.println(" °C");
// Menampilkan hasil di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SHC: ");
lcd.print(t);
lcd.print("C ");
lcd.setCursor(0, 1);
lcd.print("ST: ");
lcd.print(dsTemp);
lcd.print("C");
// kontrol LED
if (dsTemp >= 0 && dsTemp <= 38) {
digitalWrite(LED_PIN, HIGH); // Nyalakan LED
} else {
digitalWrite(LED_PIN, LOW); // Matikan LED
}
// Delay sebelum pembacaan berikutnya
delay(2000);
}