#include <LiquidCrystal_I2C.h>
const int trigPin1 = 9; // Sensor 1 mendeteksi masuk (Entrance)
const int echoPin1 = 10;
const int trigPin2 = 5; // Sensor 2 mendeteksi keluar (Exit)
const int echoPin2 = 11;
long durasi1, durasi2;
float jarak1, jarak2;
int count = 0; // Variabel counting objek
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("SAMSUL HUDA");
lcd.setCursor(0, 1);
lcd.print("41422110059");
delay(3000);
lcd.clear();
}
void loop() {
// Sensor 1 - Entrance
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
durasi1 = pulseIn(echoPin1, HIGH);
jarak1 = durasi1 * 0.034 / 2;
// Sensor 2 - Exit
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
durasi2 = pulseIn(echoPin2, HIGH);
jarak2 = durasi2 * 0.034 / 2;
// Jika objek terdeteksijarak kurang dari 10 cm, dianggap objek masuk/terdeteksi
if (jarak1 < 10) {
count++; // Tambahan counting objek
lcd.setCursor(0, 0);
lcd.print("OBJEK MASUK");
lcd.setCursor(0, 1);
lcd.print("COUNT: ");
lcd.print(count);
delay(2000);
lcd.clear();
Serial.println("Objek masuk terdeteksi.");
Serial.print("Total Count: ");
Serial.println(count);
}
// Jika objek terdeteksijarak kurang dari 10 cm, dianggap objek keluar
if (jarak2 < 10 && count > 0) { // Pastikan count tidak negatif
count--; // Kurangin counting objek
lcd.setCursor(0, 0);
lcd.print("OBJEK KELUAR");
lcd.setCursor(0, 1);
lcd.print("COUNT: ");
lcd.print(count);
delay(2000);
lcd.clear();
Serial.println("Objek keluar terdeteksi.");
Serial.print("Total Count: ");
Serial.println(count);
}
// Status serial monitor
if (count == 0) {
Serial.println("Semua objek telah keluar, area kosong.");
} else {
Serial.print("Jumlah objek di area: ");
Serial.println(count);
}
delay(500); // Delay
}