const int buzzerPin = 27; // Pin buzzer
const int trigPin = 5; // Pin trigger ultrasonik
const int echoPin = 18; // Pin echo ultrasonik
const int redLedPin = 25; // Pin LED merah
const int greenLedPin = 26; // Pin LED hijau
const int servoPin = 15; // Pin servo
// Define sound speed in cm/uS
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.393701
long duration;
float distanceCm;
float distanceInch;
void setup() {
Serial.begin(115200);
pinMode(buzzerPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(servoPin, OUTPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm = duration * SOUND_SPEED / 2;
distanceInch = distanceCm * CM_TO_INCH;
if (distanceCm < 200) {
// Jika jarak kurang dari 200 cm, bunyikan buzzer
buzzBuzzer();
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
digitalWrite(servoPin, HIGH); // Set servo ke posisi 90 derajat
} else {
// Jika jarak lebih dari 200 cm, matikan bunyi buzzer dan kembalikan servo ke posisi awal
digitalWrite(buzzerPin, LOW);
digitalWrite(redLedPin, HIGH);
digitalWrite(greenLedPin, LOW);
digitalWrite(servoPin, LOW); // Set servo ke posisi 0 derajat
}
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
Serial.print("Distance (inch): ");
Serial.println(distanceInch);
delay(1000);
}
// Fungsi untuk membuat bunyi pada buzzer
void buzzBuzzer() {
digitalWrite(buzzerPin, HIGH); // Hidupkan buzzer
delay(3000); // Tahan bunyi selama 3 detik
digitalWrite(buzzerPin, LOW); // Matikan buzzer
}