#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi Servo dan LCD I2C
Servo servo1;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD 0x27, ukuran 16x2
int servoPin = 11; // Pin untuk servo
int buzzerPin = 9; // Pin untuk buzzer
void setup() {
servo1.attach(servoPin);
pinMode(buzzerPin, OUTPUT);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Palang Pintu Siap");
delay(2000); // Tampilkan pesan awal selama 2 detik
lcd.clear();
}
void displayMessage(const char* message) {
lcd.clear();
lcd.setCursor(0, 0); // Tampilkan pesan di baris pertama
lcd.print(message);
}
void loop() {
// Servo bergerak ke posisi 0 derajat (terbuka), buzzer mati
servo1.write(0);
digitalWrite(buzzerPin, LOW); // Matikan buzzer
noTone(buzzerPin);
displayMessage("Palang Terbuka"); // Menampilkan pesan palang terbuka
delay(5000);
// Servo bergerak ke posisi 90 derajat (tertutup), buzzer menyala
servo1.write(90);
digitalWrite(buzzerPin, HIGH); // Aktifkan buzzer
displayMessage("Stop, Ada Kereta"); // Menampilkan pesan palang tertutup
for (int i = 0; i < 5; i++) {
tone(buzzerPin, 1500);
delay(1000);
tone(buzzerPin, 1000);
delay(1000);
}
noTone(buzzerPin); // Matikan buzzer setelah siklus selesai
}