#include <Wire.h> // Library for I2C communication
#include <LiquidCrystal_I2C.h> // Library for LCD
#include <DHT.h> // Library for DHT sensor
// Define pin connections
#define DHT_PIN 2 // DHT22 sensor data pin connected to pin 2
#define MQ2_PIN A0 // MQ-2 gas sensor analog output connected to A0
#define DHT_TYPE DHT22 // Define sensor type
// Initialize LCD with I2C address 0x27, 16 columns, and 2 rows
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Initialize DHT sensor
DHT dht(DHT_PIN, DHT_TYPE);
void setup() {
lcd.init(); // Initialize LCD
lcd.backlight(); // Turn on LCD backlight
dht.begin(); // Initialize DHT sensor
pinMode(MQ2_PIN, INPUT); // Set MQ-2 gas sensor pin as input
}
void loop() {
static unsigned long lastSensorRead = 0;
// Read sensor data every 2 seconds
if (millis() - lastSensorRead > 2000) {
float humidity = dht.readHumidity(); // Read humidity from DHT22
float temperature = dht.readTemperature(); // Read temperature from DHT22
int gasValue = analogRead(MQ2_PIN); // Read gas sensor value (Needs Calibration)
// Display data on LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temperature);
lcd.print("C H:");
lcd.print(humidity);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Gas: ");
lcd.print(gasValue); // Display raw gas sensor value (Needs Calibration)
lastSensorRead = millis(); // Update last sensor read time
}
}