#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define flamePin 2
#define gasPin A0
#define buzzer 8
#define ledPin 13 

LiquidCrystal_I2C lcd(0x27, 16, 2); // Change to 0x3F if needed

void setup() {
  pinMode(flamePin, INPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(ledPin, OUTPUT);
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Fire & Smoke");
  lcd.setCursor(0, 1);
  lcd.print("Detector Ready");
  delay(2000);
  lcd.clear();
}

void loop() {
  int flame = digitalRead(flamePin);
  int gasValue = analogRead(gasPin);
  int gasThreshold = 300; // Adjust based on environment

  lcd.setCursor(0, 0);
  lcd.print("Flame: ");
  lcd.print(flame == LOW ? "YES " : "NO  "); // For active LOW sensors

  lcd.setCursor(0, 1);
  lcd.print("Smoke: ");
  lcd.print(gasValue > gasThreshold ? "YES " : "NO  ");

  if (flame == LOW || gasValue > gasThreshold) {
    // Danger detected
    digitalWrite(buzzer, HIGH);

    // Flash LED
    digitalWrite(ledPin, HIGH);
    delay(150);
    digitalWrite(ledPin, LOW);
    delay(150);
  } 
  else {
    // Normal condition
    digitalWrite(buzzer, LOW);
    digitalWrite(ledPin, LOW);
    delay(300);
  }
}
