#include <Wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>
hd44780_I2Cexp lcd;
const int GAS_PIN = A0;
const int GREEN_LED = 4;
const int RED_LED = 5;
const int BUZZER = 6;
const int RELAY_PIN = 7;
const int THRESHOLD = 300; // set just below the value you reach when you raise the gas level
void setup() {
Serial.begin(9600);
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);
int status = lcd.begin(16, 2);
if (status) {
Serial.println("LCD not found - check SDA/SCL wiring");
}
lcd.print("SmokeGuard");
lcd.setCursor(0, 1);
lcd.print("Starting...");
delay(1500);
lcd.clear();
}
void loop() {
int value = analogRead(GAS_PIN);
Serial.println(value);
lcd.setCursor(0, 0);
if (value > THRESHOLD) {
lcd.print("SMOKE DETECTED ");
lcd.setCursor(0, 1);
lcd.print("Fan ON Val:");
lcd.print(value);
lcd.print(" ");
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, HIGH);
tone(BUZZER, 1000); // buzzer ON
digitalWrite(RELAY_PIN, HIGH);
} else {
lcd.print("Air Normal ");
lcd.setCursor(0, 1);
lcd.print("Fan OFF Val:");
lcd.print(value);
lcd.print(" ");
digitalWrite(GREEN_LED, HIGH);
digitalWrite(RED_LED, LOW);
noTone(BUZZER); // buzzer OFF
digitalWrite(RELAY_PIN, LOW);
}
delay(300);
}