#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD (alamat 0x27, 16 kolom, 2 baris)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin sensor dan output
#define GAS_PIN 34
#define LED_PIN 26
#define buzzer 25
// Ambang batas gas (dalam persen)
#define GAS_THRESHOLD 60.0
void setup() {
Wire.begin(21, 22);
lcd.init();
lcd.backlight();
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
lcd.setCursor(0, 0);
lcd.print("Monitoring Gas");
tone(buzzer, 1000);
delay(225);
tone(buzzer, 1500);
delay(225);
tone(buzzer, 2000);
delay(225);
noTone(buzzer);
delay(275);
lcd.clear();
}
void loop() {
int gasValue = analogRead(GAS_PIN);
float gasPercent = (gasValue / 4095.0) * 100.0;
Serial.print("Gas Value: ");
Serial.print(gasValue);
Serial.print(" (");
Serial.print(gasPercent, 1);
Serial.println("%)");
lcd.setCursor(0, 0);
lcd.print("Gas: ");
lcd.print(gasPercent, 1);
lcd.print(" %");
if (gasPercent >= GAS_THRESHOLD) {
// LED berkedip
digitalWrite(LED_PIN, HIGH);
tone(buzzer, 2000);
delay(300);
digitalWrite(LED_PIN, LOW);
tone(buzzer, 1000);
delay(300);
} else {
digitalWrite(LED_PIN, LOW);
noTone(buzzer);
delay(1000); // delay lebih lama saat aman
}
}