#define BLYNK_TEMPLATE_ID "TMPL6UEQ8l2NQ"
#define BLYNK_TEMPLATE_NAME "Deteksi Gas"
#define BLYNK_AUTH_TOKEN "2v_mUVie3fKnjLytRJI2M4LO1O-QXkCl"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
const char* ssid = "Wokwi-GUEST";
const char* pass = "";
#define GAS 35
//#define Buzzer 5
#define LED 18
#define LED1 19
#define LED2 5
#define srvo 25
Servo myServo;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
lcd.init();
lcd.backlight();
myServo.attach(srvo); // Menghubungkan servo ke pin 25// Set posisi awal servo ke 0 derajat
pinMode(GAS, INPUT);
//pinMode(Buzzer, OUTPUT);
pinMode(LED, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
}
void loop() {
Blynk.run();
int G = analogRead(GAS);
Blynk.virtualWrite(V1, G);
Serial.print("GAS: ");
Serial.println(G);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Gas: ");
lcd.print(G);
// if (G > 1000) {
// lcd.setCursor(4, 1);
// lcd.print("!!ALERT!!");
// myServo.write(90); // Servo ke 90 derajat
// Blynk.virtualWrite(V0, HIGH);
// digitalWrite(Buzzer, HIGH);
// tone(Buzzer, 2000, 50);
// digitalWrite(LED, HIGH);
// } else {
// lcd.setCursor(7, 1);
// lcd.print("AMAN");
// myServo.write(45); // Servo ke 0 derajat
// Blynk.virtualWrite(V0, LOW);
// digitalWrite(Buzzer, LOW);
// noTone(Buzzer);
// digitalWrite(LED, LOW);
// }
if(G > 1000) {
myServo.write(90);
lcd.setCursor(4, 1);
lcd.print("!!ALERT!!");
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
digitalWrite(LED1, HIGH);
delay(100);
digitalWrite(LED1, LOW);
delay(100);
digitalWrite(LED2, HIGH);
delay(100);
digitalWrite(LED2, LOW);
delay(100);
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
digitalWrite(LED1, HIGH);
delay(100);
digitalWrite(LED1, LOW);
delay(100);
digitalWrite(LED2, HIGH);
delay(100);
digitalWrite(LED2, LOW);
delay(100);
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
digitalWrite(LED1, HIGH);
delay(100);
digitalWrite(LED1, LOW);
delay(100);
digitalWrite(LED2, HIGH);
delay(100);
digitalWrite(LED2, LOW);
delay(100);
Blynk.virtualWrite(V2, HIGH);
delay(100);
Blynk.virtualWrite(V2, LOW);
delay(100);
}else{
myServo.write(0);
lcd.setCursor(7, 1);
lcd.print("AMAN");
digitalWrite(LED, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
Blynk.virtualWrite(V2, LOW);
Blynk.virtualWrite(V3, LOW);
Blynk.virtualWrite(V4, LOW);
}
delay(1000);
// Delay untuk stabilitas pembacaan
}