#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// ----------------- LCD -----------------
LiquidCrystal_I2C lcd(0x27, 20, 4); // Change 0x27 to 0x3F if needed
// ----------------- DHT22 -----------------
#define DHTPIN 7 // DHT22 connected to pin 7
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// ----------------- DS18B20 -----------------
#define ONE_WIRE_BUS 6 // DS18B20 connected to pin 6
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
sensors.begin();
// Welcome message
lcd.setCursor(0, 0);
lcd.print("sensor working...");
lcd.setCursor(0, 1);
lcd.print("Initializing...");
delay(2000);
lcd.clear();
}
void loop() {
// Read sensors
float h = dht.readHumidity(); // Humidity from DHT22
float t = dht.readTemperature(); // Temp from DHT22
sensors.requestTemperatures();
float tempDS = sensors.getTempCByIndex(0); // Temp from DS18B20
// Display format
lcd.setCursor(0, 0);
lcd.print("Temperature: ");
lcd.print(t, 1);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Moisture: ");
lcd.print(h, 1);
lcd.print("% ");
lcd.setCursor(0, 2);
lcd.print("DS18B20: ");
lcd.print(tempDS, 1);
lcd.print((char)223);
lcd.print("C");
delay(2000);
}