// Deklarasi token, template ID, dan nama template Blynk
#define BLYNK_TEMPLATE_ID "TMPL6TSvpfyZO"
#define BLYNK_TEMPLATE_NAME "Gas Alert"
#define BLYNK_AUTH_TOKEN "gj0olkTtU8ZS2LRWnFYhQtMMWIT1oX6K"
#define BLYNK_PRINT Serial
#include <ESP32Servo.h>
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
BlynkTimer timer;
// Deklarasi pin
int potPin = 2;
int buzzerPin = 12;
int servoPin = 13;
int gasSensorPin = 34; // sensor tidak ada dalam simulasi
int ledPin = 14;
int sensorThres = 100; // sesuaikan sensor yang akan digunakan
// Inisialisasi servo
Servo mendeteksiGas;
void setup() {
// Mulai komunikasi serial
Serial.begin(9600);
// Set mode pin
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
// Attach servo
mendeteksiGas.attach(servoPin);
// Mulai koneksi Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, "Wokwi-GUEST", ""); // sesuaikan wifi yg akan digunakan
timer.setInterval(2500L, sendSensor);
}
// mengirim ke blynk
void sendSensor (){
// Baca nilai sensor gas
// analogRead(gasSensorPin) ganti dengan angka untuk simulasi
// karena alat sensor gas tidak tersedia dalam simulasi
int gasValue = 120;
Blynk.virtualWrite(V0, gasValue);
Serial.print("Gas Sensor Value: ");
Serial.println(gasValue);
if (gasValue > 0 && gasValue <= 50) {
// Jika gas terdeteksi tetapi,
// servo diposisikan 0,
// LED Menyala, buzzer dimatikan,
// log Blynk dicatat sebagai "GAS TERDETEKSI"
mendeteksiGas.write(0);
digitalWrite(ledPin, HIGH);
noTone(buzzerPin);
Blynk.logEvent("gas_warning", "GAS TERDETEKSI");
} else if (gasValue > 100) {
// Jika nilai sensor gas melebihi ambang batas,
// servo diputar ke posisi 0,
// LED tetap menayal, buzzer diaktifkan
// log Blynk dicatat sebagai "GAS BOCOR"
mendeteksiGas.write(0);
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000);
Blynk.logEvent("gas_alert", "GAS BOCOR");
} else {
// Jika gas tidak terdeteksi,
// servo diposisikan berdasarkan nilai potensiometer,
// LED dimatikan, buzzer dimatikan,
// log Blynk dicatat sebagai "TIDAK ADA GAS"
int potValue = analogRead(potPin);
potValue = map(potValue, 0, 1023, 0, 180);
mendeteksiGas.write(potValue);
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
Blynk.logEvent("gas_info", "TIDAK ADA GAS");
}
// Tambahkan penundaan sesuai kebutuhan
delay(1000);
}
void loop() {
// Jalankan Blynk
Blynk.run();
timer.run();
}