#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int mq2Pin1 = 34; // Pin ADC di ESP32 tempat MQ-2 pertama terhubung
int mq2Pin2 = 35; // Pin ADC di ESP32 tempat MQ-2 kedua terhubung
int relayPin1 = 26; // Pin digital di ESP32 untuk mengontrol relay pertama
int relayPin2 = 25; // Pin digital di ESP32 untuk mengontrol relay kedua
int threshold = 400; // Ambang batas nilai analog untuk mengaktifkan relay
int buzzerPin = 27;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C dari LCD, lebar 16 karakter, tinggi 2 baris
void setup() {
Serial.begin(115200);
pinMode(mq2Pin1, INPUT);
pinMode(mq2Pin2, INPUT);
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
pinMode(buzzerPin, OUTPUT);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("MQ-2 Sensor");
}
void loop() {
int analogValue1 = analogRead(mq2Pin1); // Membaca nilai analog dari MQ-2 pertama
int analogValue2 = analogRead(mq2Pin2); // Membaca nilai analog dari MQ-2 kedua
float voltage1 = analogValue1 * (3.3 / 4095.0); // Konversi nilai analog pertama ke tegangan
float voltage2 = analogValue2 * (3.3 / 4095.0); // Konversi nilai analog kedua ke tegangan
int mappedValue1 = map(analogValue1, 0, 4095, 0, 100);
int mappedValue2 = map(analogValue2, 0, 4095, 0, 100);
Serial.print("MQ-2 Sensor 1 Analog Value: ");
Serial.println(mappedValue1);
Serial.print("Voltage 1: ");
Serial.print(voltage1);
Serial.println(" V");
Serial.print("MQ-2 Sensor 2 Analog Value: ");
Serial.println(mappedValue2);
Serial.print("Voltage 2: ");
Serial.print(voltage2);
Serial.println(" V");
// Tampilkan nilai sensor 1 di baris pertama LCD
lcd.setCursor(0, 0);
lcd.print("Analog 1: ");
lcd.print(mappedValue1);
lcd.print(" "); // Membersihkan sisa karakter
// Tampilkan nilai sensor 2 di baris kedua LCD
lcd.setCursor(0, 1);
lcd.print("Analog 2: ");
lcd.print(mappedValue2);
lcd.print(" "); // Membersihkan sisa karakter
// Kontrol relay berdasarkan nilai sensor
if (analogValue1 > threshold) {
digitalWrite(relayPin1, HIGH); // Aktifkan relay 1
tone(buzzerPin, 200);
} else {
digitalWrite(relayPin1, LOW); // Matikan relay 1
noTone(buzzerPin);
}
if (analogValue2 > threshold) {
digitalWrite(relayPin2, HIGH); // Aktifkan relay 2
tone(buzzerPin, 200);
} else {
digitalWrite(relayPin2, LOW); // Matikan relay 2
noTone(buzzerPin);
}
delay(1000); // Delay 1 detik
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4