#include <Servo.h>
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
// Deklarasi pin
const int potPin = 2;
const int buzzerPin = 12;
const int servoPin = 13;
const int gasSensorPin = 34;
const int ledPin = 14;
// Inisialisasi servo
Servo mendeteksiGas;
// Deklarasi token, template ID, dan nama template Blynk
#define BLYNK_TEMPLATE_ID "TMPL6PtFtg58u"
#define BLYNK_TEMPLATE_NAME "Pendeteksi Gas Bocor"
#define BLYNK_AUTH_TOKEN "AY_PcuePJrV4biMHCNSlPAvz6xVlwrtt"
#define BLYNK_PRINT Serial
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);
}
void loop() {
// Jalankan Blynk
Blynk.run();
// Baca nilai potensiometer
int potValue = analogRead(potPin);
Serial.print("Potensiometer Value: ");
Serial.println(potValue);
// Baca nilai sensor gas
int gasValue = analogRead(gasSensorPin);
Serial.print("Gas Sensor Value: ");
Serial.println(gasValue);
// Cek apakah nilai sensor gas melebihi ambang batas
if (gasValue > 800) {
// Jika iya, putar servo ke posisi 0, nyalakan LED, dan aktifkan buzzer
mendeteksiGas.write(0);
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000);
// Kirim pesan ke Blynk bahwa gas terdeteksi
Blynk.virtualWrite(V1, "Gas Terdeteksi!");
} else {
// Jika tidak, sesuaikan posisi servo berdasarkan nilai potensiometer,
// matikan LED, dan matikan buzzer
int angle = map(potValue, 0, 4095, 0, 180);
mendeteksiGas.write(angle);
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
// Kirim pesan ke Blynk bahwa gas dalam keadaan aman
Blynk.virtualWrite(V1, "Gas Aman!");
}
// Baca pesan dari Serial jika tersedia
if (Serial.available() > 0) {
String message = Serial.readStringUntil('\n');
Serial.print("Gas Bocor: ");
Serial.println(message);
}
// Tunda eksekusi selama 1 detik
delay(1000);
}