#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Pin Definitions
int Input = A0;
int R_LED = 2;
int G_LED = 3;
int Buzzer = 4;
// VAL INTEGER
int val;
int MAX = 400;
// LCD setup
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 columns, 2 rows
void setup() {
Serial.begin(9600); // Serial Monitor setup
pinMode(Input, INPUT);
pinMode(R_LED, OUTPUT);
pinMode(G_LED, OUTPUT);
pinMode(Buzzer, OUTPUT);
lcd.begin(16, 2); // Initialize LCD
lcd.backlight(); // Turn on the backlight
// Welcome message
lcd.setCursor(0, 0);
lcd.print("Gas Detector");
delay(2000); // Show the welcome message for 2 seconds
lcd.clear(); // Clear the display
}
void loop() {
val = analogRead(Input); // Read the sensor value
if (val >= MAX) {
digitalWrite(R_LED, HIGH); // Turn on red LED
digitalWrite(Buzzer, HIGH); // Turn on buzzer
digitalWrite(G_LED, LOW); // Turn off green LED
// Display GAS LEAKING message
lcd.clear(); // Clear previous message
lcd.setCursor(0, 0);
lcd.print("GAS LEAKING");
Serial.println("GAS LEAKING");
} else {
digitalWrite(R_LED, LOW); // Turn off red LED
digitalWrite(Buzzer, LOW); // Turn off buzzer
digitalWrite(G_LED, HIGH); // Turn on green LED
// Display NORMAL message with fade effect
lcd.clear(); // Clear previous message
lcd.setCursor(0, 0);
lcd.print("Normal Status");
Serial.println("Normal");
}
delay(3000); // Delay for 3 seconds to prevent frequent updates
}