#include <Servo.h>
const int trigPin = 9;
const int echoPin = 10;
const int ledMerah = 12;
const int ledHijau = 11;
const int servoPin = 6;
Servo myServo;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledMerah, OUTPUT);
pinMode(ledHijau, OUTPUT);
myServo.attach(servoPin);
myServo.write(0); // Servo starts at the initial position (0 degrees)
Serial.begin(9600);
}
void loop() {
long duration, distance;
// Send ultrasonic pulse
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read echo time
duration = pulseIn(echoPin, HIGH);
// Calculate distance in cm
distance = duration * 0.034 / 2;
// Display distance on Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Control LED and servo based on distance
if (distance > 0 && distance < 100) { // Check for a valid reading (distance > 0)
digitalWrite(ledMerah, HIGH);
digitalWrite(ledHijau, LOW);
myServo.write(0); // Move servo to 0 degrees if distance is less than 100 cm
} else {
digitalWrite(ledMerah, LOW);
digitalWrite(ledHijau, HIGH);
myServo.write(90); // Servo moves to 90 degrees if distance is greater than or equal to 100 cm
}
delay(500); // Wait 500ms before re-measuring
}