#include <Servo.h>;
// Membuat objek Servo bernama 'servo' untuk mengontrol motor servo
Servo servo;
// Menginisialisasi sudut awal untuk motor servo
int angle = 4;
// Pin sensor ultrasonik
int trig = 9;
int echo = 7;
// Variabel untuk menyimpan pembacaan sensor ultrasonik
long duration;
int distance;
// Pin LED
int ledmerah = 13;
int ledhijau = 12;
void setup() {
// Setel pin LED sebagai OUTPUT
pinMode(ledmerah, OUTPUT);
pinMode(ledhijau, OUTPUT);
// Memulai komunikasi serial untuk debugging
Serial.begin(9600);
// Setel pin sensor ultrasonik
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
// Menyambungkan servo ke pin 10 dan mengatur sudut awalnya
servo.attach(4);
servo.write(angle);
}
void loop() {
// Kirim pulsa pendek untuk memicu sensor ultrasonik
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
// Ukur durasi pulsa dari sensor ultrasonik
duration = pulseIn(echo, HIGH);
// Hitung jarak dalam sentimeter menggunakan kecepatan suara
distance = duration / 50;
// Cetak jarak ke Serial Monitor untuk debugging
Serial.print("Jarak: ");
Serial.println(distance);
// Periksa apakah jarak kurang dari 150 cm
if (distance < 150) {
// Jika ada mobil, nyalakan LED hijau dan buka servo
digitalWrite(ledmerah, LOW);
digitalWrite(ledhijau, HIGH);
servo.write(0); // Posisi terbuka
// Tunda selama 1 detik sebelum menutup servo lagi
delay(1000);
} else {
// Jika tidak ada mobil, nyalakan LED merah dan tutup servo
digitalWrite(ledmerah, HIGH);
digitalWrite(ledhijau, LOW);
servo.write(90); // Posisi tertutup
}
}
//saya sengaja menukar arti if dan else karena servo dalam 0 itu ke atas dan 90 itu kebawah
//catatan lagi servo wokwi tidak bisa di putar hanay bisa di ubah sampai 180