#include <LiquidCrystal_I2C.h>
// Pin untuk LED dan Buzzer
const int ledPin = 13;
const int buzzerPin = 8;
// Pin untuk tombol hijau dan merah
const int greenButtonPin = 2;
const int redButtonPin = 3;
// Objek LCD
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
// Inisialisasi pin
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(greenButtonPin, INPUT_PULLUP);
pinMode(redButtonPin, INPUT_PULLUP);
// Inisialisasi LCD
lcd.begin(20, 4); // Sesuaikan dengan ukuran LCD yang Anda gunakan
lcd.clear();
}
void loop() {
// Menghidupkan lampu LED dan buzzer berkedip-kedip pada awal program
ledBuzzerBlink();
// Menampilkan teks peringatan dan menyala alarm berulang-ulang
while (true) {
lcd.clear();
lcd.print("Anda terdeteksi");
lcd.setCursor(0, 1);
lcd.print("sedang mengantuk!");
// Menghidupkan lampu LED dan buzzer berkedip-kedip
ledBuzzerBlink();
delay(1800); // Delay sebelum menampilkan pertanyaan
// Menampilkan pertanyaan dengan tombol iya dan tidak
lcd.clear();
lcd.print("Apakah benar, anda");
lcd.setCursor(0, 1);
lcd.print("Sedang mengantuk?");
lcd.setCursor(0, 2);
lcd.print(" "); // Membersihkan baris ketiga
lcd.setCursor(0, 3);
lcd.print(" Iya Tidak ");
ledBuzzerBlink();
// Menunggu input dari tombol
while (true) {
if (digitalRead(greenButtonPin) == LOW) {
// Tombol hijau ditekan (user menjawab "Iya")
lcd.clear();
lcd.print("JANGAN BERKENDARA");
lcd.setCursor(0, 1);
lcd.print("SAAT MENGANTUK!!!");
// Menghidupkan lampu LED dan buzzer berkedip-kedip tanpa henti
while (true) {
ledBuzzerBlink();
}
} else if (digitalRead(redButtonPin) == LOW) {
// Tombol merah ditekan (user menjawab "Tidak")
ledBuzzerBlink();
lcd.clear();
lcd.print("Selamat melanjutkan");
lcd.setCursor(0, 1);
lcd.print("Perjalanan");
delay(2300);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(" Semoga Selamat :)");
lcd.setCursor(0, 2);
lcd.print(" "); // Membersihkan baris ketiga
lcd.setCursor(0, 3);
lcd.print(" BARDRIVE");
// Matikan lampu LED dan buzzer
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
// Hentikan program
while (true) {
// Do nothing
}
}
delay(100);
}
}
}
// Fungsi untuk menghidupkan lampu LED dan buzzer berkedip-kedip
void ledBuzzerBlink() {
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000);
delay(500);
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
delay(500);
}