#include <LiquidCrystal.h>
#include <Servo.h>
// Definisikan pin
const int trigPin = 2; // Pin untuk sensor ultrasonic (trig)
const int echoPin = 3; // Pin untuk sensor ultrasonic (echo)
const int ledPin = 13; // Pin untuk LED
const int buzzerPin = 5; // Pin untuk buzzer
const int servoPin = 9; // Pin untuk servo
// Buat objek untuk LCD dan servo
LiquidCrystal lcd(7, 8, 4, 5, 3, 2); // Pin-pins untuk LCD (RS, E, D4, D5, D6, D7)
Servo palangServo;
// Variabel
long duration;
int distance;
void setup() {
// Inisialisasi pin
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.clear();
// Atur servo ke posisi awal (palang terbuka)
palangServo.attach(servoPin);
palangServo.write(90); // 90 derajat (palang terbuka)
// Tampilkan pesan awal di LCD
lcd.setCursor(0, 0);
lcd.print("Produk by:");
lcd.setCursor(0, 1);
lcd.print("Kinanti & Tsabita");
delay(2000); // Tampilkan selama 2 detik
lcd.clear();
}
void loop() {
// Menghitung jarak
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Mengukur waktu dan menghitung jarak
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
// Kondisi berdasarkan jarak
if (distance > 100) {
// Jarak > 100 cm
digitalWrite(ledPin, LOW); // Matikan LED
digitalWrite(buzzerPin, LOW); // Matikan buzzer
palangServo.write(90); // Palang tetap terbuka
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Produk by:");
lcd.setCursor(0, 1);
lcd.print("Kinanti & Tsabita");
}
else if (distance >= 80 && distance <= 100) {
// Jarak 80-100 cm
digitalWrite(ledPin, HIGH); // LED menyala terang
digitalWrite(buzzerPin, LOW); // Matikan buzzer
palangServo.write(90); // Palang tetap terbuka
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Jarak range 3");
}
else if (distance >= 50 && distance < 80) {
// Jarak 50-79 cm
digitalWrite(ledPin, HIGH); // LED berkedip
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
digitalWrite(buzzerPin, HIGH); // Buzzer menyala
palangServo.write(90); // Palang tetap terbuka
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Jarak range 2");
}
else if (distance < 50) {
// Jarak < 50 cm
digitalWrite(ledPin, HIGH); // LED berkedip lebih cepat
delay(200);
digitalWrite(ledPin, LOW);
delay(200);
digitalWrite(buzzerPin, HIGH); // Buzzer berbunyi lebih cepat
palangServo.write(0); // Palang ditutup
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Jarak range 1");
}
}