#include <Servo.h>
// pin sensor jarak
const int trigPin = 2;
const int echoPin = 3;
// pin aktuator motor servo
const int servoPin = 5;
// Pin lampu LED
const int ledPin = 7;
// Pin Buzzer
const int buzzerPin = 8;
Servo servo;
void setup () {
pinMode (trigPin,OUTPUT );
pinMode (echoPin, INPUT);
pinMode (ledPin, OUTPUT);
pinMode (buzzerPin,OUTPUT);
servo.attach(servoPin);
servo.write(0); // posisi awal palang pintu tertutup
Serial.begin(9600);
}
void loop () {
long duration , distance;
digitalWrite(trigPin,LOW);
delayMicroseconds (2);
digitalWrite(trigPin, HIGH);
delayMicroseconds (10);
digitalWrite(trigPin, LOW);
duration = pulseIn (echoPin,HIGH);
// menghitung jarak
distance = duration * 0.034/2;
if (distance > 0 && distance < 10) {
openGate();
blinkLEDAndBuzzer();
} else {
closeGate();
turnOffLEDAndBuzzer();
}
delay (100);
}
void openGate(){
servo.write(90);
delay(1000);
}
void closeGate(){
servo.write(0);
delay(1000);
}
void blinkLEDAndBuzzer() {
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000);
delay (500);
digitalWrite(ledPin, LOW);
tone(buzzerPin, 500);
delay(500);
}
void turnOffLEDAndBuzzer() {
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
}