#include <Servo.h> // Library untuk motor servo
// Definisi pin
const int trigPin = 9;
const int echoPin = 10;
const int buzzerPin = 11;
const int ledPin = 13;
Servo myServo; // Objek servo
// Variabel untuk durasi dan jarak
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
myServo.attach(3); // Servo terhubung ke pin 3
myServo.write(0); // Servo di posisi 0 derajat awalnya
Serial.begin(9600); // Untuk debugging
}
void loop() {
// Bersihkan pin trig
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Kirim trigger pulse
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Baca echo pulse
duration = pulseIn(echoPin, HIGH);
// Hitung jarak (dalam cm)
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
// Jika jarak kurang dari 20 cm, servo bergerak, buzzer bunyi, dan LED menyala
if (distance <= 20) {
myServo.write(90); // Servo bergerak ke 90 derajat
tone(buzzerPin, 1000); // Bunyi buzzer dengan frekuensi 1000 Hz
delay(500);
tone(buzzerPin, 800); // Bunyi buzzer dengan frekuensi 1000 Hz
delay(500);
tone(buzzerPin, 1000); // Bunyi buzzer dengan frekuensi 1000 Hz
delay(500);
tone(buzzerPin, 800); // Bunyi buzzer dengan frekuensi 1000 Hz
delay(500);
tone(buzzerPin, 1000); // Bunyi buzzer dengan frekuensi 1000 Hz
delay(500);
tone(buzzerPin, 800); // Bunyi buzzer dengan frekuensi 1000 Hz
delay(500);
tone(buzzerPin, 1000); // Bunyi buzzer dengan frekuensi 1000 Hz
delay(500);
tone(buzzerPin, 800); // Bunyi buzzer dengan frekuensi 1000 Hz
delay(500);
digitalWrite(ledPin, HIGH); // Nyalakan LED
delay(1000);
}
else {
myServo.write(0); // Servo kembali ke posisi 0 derajat
noTone(buzzerPin); // Matikan buzzer
digitalWrite(ledPin, LOW); // Matikan LED
}
delay(500); // Jeda sedikit untuk membaca sensor
}