#include <Servo.h>
// Deklarasi pin untuk sensor Ultrasonik
const int trigPin = 9;
const int echoPin = 10;
const int ledm1=11;
// Variabel untuk menyimpan jarak dan jumlah barang
long duration;
int targetCount=1;
int distance;
int count = 0; // Variabel penghitung barang
int threshold = 10; // Batas jarak untuk mendeteksi barang (dalam cm)
bool objectDetected = false; // Status deteksi objek
Servo servo;
void setup() {
// Inisialisasi komunikasi Serial
servo.attach(8);
Serial.begin(9600);
// Inisialisasi pin Trig sebagai output dan Echo sebagai input
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledm1, OUTPUT);
servo.write(0);
}
void loop() {
// Set trigPin ke LOW selama 2 mikrodetik untuk memastikan sinyal bersih
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Kirim sinyal ultrasonik dari trigPin
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Baca durasi sinyal yang diterima dari echoPin (dalam mikrodetik)
duration = pulseIn(echoPin, HIGH);
// Hitung jarak (dalam cm)
distance = duration * 0.034 / 2;
// Tampilkan hasil perhitungan jarak di Serial Monitor
// Serial.print("Jarak: ");
// Serial.print(distance);
// Serial.println(" cm");
// Deteksi jika ada barang dalam jarak threshold
if (distance < threshold && !objectDetected) {
// Jika jarak kurang dari threshold dan belum terdeteksi, tambahkan penghitung
count++;
objectDetected = true; // Set status menjadi terdeteksi
digitalWrite(ledm1, LOW);
Serial.print("Jumlah barang: ");
Serial.println(count);
}
// Reset status deteksi jika barang menjauh (di luar threshold)
if (distance >= threshold && objectDetected) {
objectDetected = false;
digitalWrite(ledm1, HIGH);
}
if(count>=targetCount){
servo.write(90);
delay(500);
servo.write(0);
count=0;
}
// Delay sebelum melakukan pengukuran lagi
delay(200);
}