#include <SPI.h>
#include <SD.h>

const int trigPin = 3;   // Pin untuk trig sensor ultrasonik
const int echoPin = 4;   // Pin untuk echo sensor ultrasonik
const int buzzerPin = 5; // Pin untuk buzzer

long duration;
int currentDistance; // Jarak saat ini
int previousDistance; // Jarak sebelumnya
const int threshold = 5; // Ambang perubahan jarak (dalam cm)

void setup() {
  // Inisialisasi pin
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzerPin, OUTPUT);

  // Inisialisasi komunikasi serial
  Serial.begin(9600);

  // Inisialisasi nilai awal
  previousDistance = measureDistance();
}

void loop() {
  // Mengukur jarak saat ini
  currentDistance = measureDistance();

  // Menampilkan jarak ke serial monitor
  Serial.print("Jarak saat ini: ");
  Serial.print(currentDistance);
  Serial.println(" cm");

  // Memeriksa perubahan jarak
  if (abs(currentDistance - previousDistance) > threshold) {
      tone(buzzerPin, 1000); // Menghasilkan nada 1 kHz
      Serial.println("Pergerakan terdeteksi! Buzzer menyala.");
  } else {
      noTone(buzzerPin); // Mematikan suara buzzer
  }

  // Update jarak sebelumnya
  previousDistance = currentDistance;

  delay(200); // Delay untuk pembacaan berikutnya

  tone(buzzerPin, 1000); // Buzzer menghasilkan suara 1 kHz
  delay(1000);           // Tunggu 1 detik
  noTone(buzzerPin);     // Matikan suara buzzer
  delay(1000);           // Tunggu 1 detik
}

// Fungsi untuk mengukur jarak
int measureDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  duration = pulseIn(echoPin, HIGH);
  return duration * 0.0344 / 2; // Menghitung jarak dalam cm
}
$abcdeabcde151015202530fghijfghij