//Created by Irham Azhari Aulia
#include <Servo.h>
// Menyiapkan colokan komponen
int trigPin = 3;
int echoPin = 2;
int pinLampuMerah = 8;
int pinLampuHijau = 9;
Servo palangPintu; // Memberi nama motor servonya "palangPintu"
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(pinLampuMerah, OUTPUT);
pinMode(pinLampuHijau, OUTPUT);
palangPintu.attach(10); // Servo dicolok ke angka 10
palangPintu.write(0); // Posisi Awal: Palang Tertutup (0 derajat)
// Menyalakan lampu merah pertama kali
digitalWrite(pinLampuMerah, HIGH);
digitalWrite(pinLampuHijau, LOW);
Serial.println("Sistem Parkir Aktif. Palang Tertutup.");
}
void loop() {
// 1. Membaca Jarak (Mendeteksi Mobil)
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int jarak = duration * 0.034 / 2;
// 2. Logika Buka Tutup Palang Pintu
if (jarak > 0 && jarak <= 20) {
// JIKA ADA MOBIL MENDEKAT (Jarak 20 cm atau kurang)
Serial.println("Mobil terdeteksi! Silakan masuk.");
// Lampu Hijau Nyala, Merah Mati
digitalWrite(pinLampuMerah, LOW);
digitalWrite(pinLampuHijau, HIGH);
// Buka palang pintu (gerak ke 90 derajat)
palangPintu.write(90);
// Tahan palang tetap terbuka selama 3 detik untuk mobil lewat
delay(3000);
} else {
// JIKA TIDAK ADA MOBIL (Jarak lebih dari 20 cm)
// Palang menutup otomatis (0 derajat)
palangPintu.write(0);
// Lampu Merah Nyala, Hijau Mati
digitalWrite(pinLampuMerah, HIGH);
digitalWrite(pinLampuHijau, LOW);
}
delay(200); // Jeda sebelum membaca sensor lagi
}