#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define LED_HIJAU 3
#define LED_KUNING 4
#define LED_MERAH 5
#define BUZZER 6
#define PIR_PIN 2
#define GAS_SENSOR A0
Servo myServo;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(LED_HIJAU, OUTPUT);
pinMode(LED_KUNING, OUTPUT);
pinMode(LED_MERAH, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(PIR_PIN, INPUT);
myServo.attach(9);
lcd.init();
lcd.backlight();
// Tampilkan nilai default saat pertama nyala
lcd.setCursor(0, 0);
lcd.print("Gas ADC: 150");
lcd.setCursor(0, 1);
lcd.print("Init sensor...");
delay(3000); // Tunggu 3 detik sebelum mulai baca sensor
}
void loop() {
int gasValue = analogRead(GAS_SENSOR);
bool pirState = digitalRead(PIR_PIN);
if (pirState == HIGH) {
digitalWrite(LED_HIJAU, HIGH);
digitalWrite(LED_KUNING, HIGH);
digitalWrite(LED_MERAH, HIGH);
digitalWrite(BUZZER, HIGH);
myServo.write(90);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("EVAKUASI");
lcd.setCursor(0, 1);
lcd.print("BERLANGSUNG");
} else {
digitalWrite(BUZZER, LOW);
myServo.write(0);
if (gasValue < 250) {
digitalWrite(LED_HIJAU, HIGH);
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_MERAH, LOW);
} else if (gasValue >= 250 && gasValue <= 400) {
digitalWrite(LED_HIJAU, LOW);
digitalWrite(LED_KUNING, HIGH);
digitalWrite(LED_MERAH, LOW);
} else {
digitalWrite(LED_HIJAU, LOW);
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_MERAH, HIGH);
digitalWrite(BUZZER, HIGH);
myServo.write(90);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Gas ADC: ");
lcd.print(gasValue);
lcd.setCursor(0, 1);
lcd.print("Servo:");
lcd.print(myServo.read());
lcd.print(" Buz:");
lcd.print(digitalRead(BUZZER));
}
delay(500);
}