#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
#define SENSOR_INDUKTIF 34 // Pin sensor induktif
#define SENSOR_KAPASITIF 35 // Pin sensor kapasitif
#define SENSOR_GAS 32 // Pin sensor gas (MQ-9)
#define SERVO_INDUKTIF 18 // Pin servo untuk sensor induktif
#define SERVO_KAPASITIF 19 // Pin servo untuk sensor kapasitif
#define SERVO_GAS 25 // Pin servo untuk sensor gas
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD bisa 0x27 atau 0x3F
Servo servoInduktif;
Servo servoKapasitif;
Servo servoGas;
void setup() {
pinMode(SENSOR_INDUKTIF, INPUT_PULLUP);
pinMode(SENSOR_KAPASITIF, INPUT_PULLUP);
pinMode(SENSOR_GAS, INPUT);
servoInduktif.attach(SERVO_INDUKTIF);
servoKapasitif.attach(SERVO_KAPASITIF);
servoGas.attach(SERVO_GAS);
servoInduktif.write(0); // Posisi awal servo induktif
servoKapasitif.write(0); // Posisi awal servo kapasitif
servoGas.write(0); // Posisi awal servo gas
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Menunggu...");
}
void loop() {
int induktifValue = digitalRead(SENSOR_INDUKTIF);
int kapasitifValue = digitalRead(SENSOR_KAPASITIF);
int gasValue = digitalRead(SENSOR_GAS);
lcd.setCursor(0, 1);
if (induktifValue == HIGH) { // Logam terdeteksi
lcd.clear();
lcd.setCursor(0, 0);
Serial.println("Logam TERDETEKSI!");
lcd.print("Logam Terdeteksi!");
servoInduktif.write(90); // Gerakkan servo ke posisi 90 derajat
delay(1000);
servoInduktif.write(0); // Kembalikan ke posisi awal
} else if (kapasitifValue == HIGH) { // Objek non-logam terdeteksi
lcd.clear();
lcd.setCursor(0, 0);
Serial.println("Non-logam TERDETEKSI!");
lcd.print("Non-logam Terdeteksi!");
servoKapasitif.write(90); // Gerakkan servo ke posisi 90 derajat
delay(1000);
servoKapasitif.write(0); // Kembalikan ke posisi awal
} else if (gasValue == HIGH) { // Gas terdeteksi
lcd.clear();
lcd.setCursor(0, 0);
Serial.println("Gas TERDETEKSI!");
lcd.print("Gas Terdeteksi!");
servoGas.write(90); // Gerakkan servo gas ke posisi 90 derajat
delay(1000);
servoGas.write(0); // Kembalikan ke posisi awal
} else {
lcd.clear();
lcd.setCursor(0, 0);
Serial.println("Tidak ada objek.");
lcd.print("Tidak ada objek. ");
servoInduktif.write(0);
servoKapasitif.write(0);
servoGas.write(0);
}
delay(500);
}