// Inisialisasi speaker
int speakerPin = 5;
// Inisialisasi tombol lampu mundur
int buttonPinReverse = 2;
int buttonStateReverse = 0;
// Inisialisasi tombol sein kiri
int buttonPinL = 3;
int buttonStateL = 0;
// Inisialisasi tombol sein kanan
int buttonPinR = 6;
int buttonStateR = 0;
// Inisialiassi tombol hazard
int buttonPinH = 9;
int buttonStateH = 0;
// Inisialisasi LCD
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
void setup() {
pinMode(7, OUTPUT); // Lampu mundur
pinMode(12, OUTPUT); // Lampu sein kiri
pinMode(8, OUTPUT); // Lampu sein kanan
pinMode(13, OUTPUT); // Lampu arduino
pinMode(speakerPin, OUTPUT); // suara
pinMode(buttonPinL,INPUT); // Tombol lampu sein kiri
pinMode(buttonPinR,INPUT); // Tombol lampu sein kanan
pinMode(buttonPinH,INPUT); // Tombol lampu hazard
// Skrip LCD
lcd.init();
lcd.backlight();
}
void loop() {
buttonStateL = digitalRead(buttonPinL);
buttonStateR = digitalRead(buttonPinR);
buttonStateH = digitalRead(buttonPinH);
buttonStateReverse = digitalRead(buttonPinReverse);
// Skrip untuk sein kiri
if(buttonStateL == HIGH && buttonStateR == LOW && buttonStateH == LOW && buttonStateReverse == LOW)
{
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
digitalWrite(speakerPin,HIGH);
lcd.setCursor(3, 0);
lcd.print("BELOK KIRI");
volume();
delay(450);
lcd.clear();
digitalWrite(12, LOW);
digitalWrite(speakerPin,LOW);
delay(450);
}
// Skrip untuk sein kanan
if(buttonStateL == LOW && buttonStateR == HIGH && buttonStateH == LOW && buttonStateReverse == LOW)
{
digitalWrite(8, HIGH);
digitalWrite(13, HIGH);
digitalWrite(speakerPin,HIGH);
lcd.setCursor(3, 0);
lcd.print("BELOK KANAN");
volume();
delay(450);
lcd.clear();
digitalWrite(8, LOW);
digitalWrite(speakerPin,LOW);
delay(450);
}
// Skrip untuk hazard
if(buttonStateL == LOW && buttonStateR == LOW && buttonStateH == HIGH && buttonStateReverse == LOW)
{
digitalWrite(8, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
digitalWrite(speakerPin,HIGH);
lcd.setCursor(5, 0);
lcd.print("HAZARD!");
volume();
delay(450);
lcd.clear();
digitalWrite(8, LOW);
digitalWrite(12, LOW);
digitalWrite(speakerPin,LOW);
delay(450);
}
// Skrip untuk lampu mundur
// Skrip untuk menyalakan lampu mundur
if(buttonStateReverse == HIGH)
{
digitalWrite(7, HIGH);
lcd.setCursor(5,0);
lcd.print("MUNDUR");
}
// Skrip untuk mematikan lampu mundur
if(buttonStateReverse == LOW)
{
lcd.clear();
digitalWrite(7, LOW);
}
// Skrip untuk lampu mundur dan sein kiri
if(buttonStateReverse == HIGH && buttonStateL == HIGH )
{
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
digitalWrite(speakerPin,HIGH);
lcd.setCursor(5, 0);
lcd.print("MUNDUR");
lcd.setCursor(3,1);
lcd.print("BELOK KIRI");
volume();
delay(450);
lcd.clear();
digitalWrite(8, LOW);
digitalWrite(12, LOW);
digitalWrite(speakerPin,LOW);
delay(450);
}
// Skrip untuk lampu mundur dan sein kanan
if(buttonStateReverse == HIGH && buttonStateR == HIGH )
{
digitalWrite(8, HIGH);
digitalWrite(13, HIGH);
digitalWrite(speakerPin,HIGH);
lcd.setCursor(5, 0);
lcd.print("MUNDUR");
lcd.setCursor(3,1);
lcd.print("BELOK KANAN");
volume();
delay(450);
lcd.clear();
digitalWrite(8, LOW);
digitalWrite(speakerPin,LOW);
delay(450);
}
// Skrip untuk lampu mundur dan lampu hazard
if(buttonStateReverse == HIGH && buttonStateH == HIGH )
{
digitalWrite(8, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
digitalWrite(speakerPin,HIGH);
lcd.setCursor(5, 0);
lcd.print("MUNDUR");
lcd.setCursor(5,1);
lcd.print("HAZARD!");
volume();
delay(450);
lcd.clear();
digitalWrite(8, LOW);
digitalWrite(12, LOW);
digitalWrite(speakerPin,LOW);
delay(450);
}
digitalWrite(13, LOW);
}
void volume()
{
int frequency = 750; // Frekuensi dalam Hertz
int duration = 50; // Durasi dalam milidetik (ms)
// Menghasilkan suara dengan frekuensi dan durasi yang telah ditentukan
tone(speakerPin, frequency, duration);
delay(duration); // Menunda eksekusi agar suara tidak terputus-putus
}