int speakerPin = 5;
// Tombol untuk lampu menyala bergantian
int buttonPin1 = 12;
int buttonState1 = 0;
// Tombol untuk lampu berbarengan
int buttonPin2 = 3;
int buttonState2 = 0;
#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() {
// Inisialisasi pin yang akan digunakan
pinMode(2, OUTPUT);
pinMode(3,INPUT);
pinMode(4, OUTPUT);
pinMode(7, OUTPUT); // projek untuk lampu menyala berbarengan
pinMode(13, OUTPUT);
pinMode(speakerPin, OUTPUT);
pinMode(buttonPin1, INPUT);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
}
void loop() {
// Kode utama yang akan dijalankan berulang kali
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
// Lampu menyala bergantian
if(buttonState1 == HIGH && buttonState2 == LOW )
{
digitalWrite(13,HIGH);
digitalWrite(4,HIGH);
digitalWrite(2,LOW);
digitalWrite(speakerPin,HIGH);
volume();
lcd.setCursor(4, 0);
lcd.print("BERHENTI");
lcd.setCursor(0, 1);
lcd.print("AWAS ADA KERETA!");
delay(900);
lcd.clear();
digitalWrite(4,LOW);
digitalWrite(2,HIGH);
digitalWrite(speakerPin,HIGH);
volume2();
digitalWrite(13,HIGH);
lcd.setCursor(6, 0);
lcd.print("STOP");
lcd.setCursor(0, 1);
lcd.print("WATCH OUT TRAIN!");
delay(900);
lcd.clear();
digitalWrite(2,LOW);
digitalWrite(13,LOW);
digitalWrite(speakerPin,LOW);
}
// Lampu menyala berbarengan
if(buttonState1 == LOW && buttonState2 == HIGH)
{
digitalWrite(13,HIGH);
digitalWrite(4,HIGH);
digitalWrite(2,HIGH);
digitalWrite(speakerPin,HIGH);
volume();
lcd.setCursor(4, 0);
lcd.print("BERHENTI");
lcd.setCursor(0, 1);
lcd.print("AWAS ADA KERETA!");
delay(900);
lcd.clear();
digitalWrite(4,LOW);
digitalWrite(2,LOW);
digitalWrite(speakerPin,HIGH);
volume2();
digitalWrite(13,HIGH);
lcd.setCursor(6, 0);
lcd.print("STOP");
lcd.setCursor(0, 1);
lcd.print("WATCH OUT TRAIN!");
delay(900);
lcd.clear();
digitalWrite(2,HIGH);
digitalWrite(13,HIGH);
digitalWrite(speakerPin,HIGH);
}
if(buttonState1 == LOW || buttonState2 == LOW)
{
lcd.clear();
digitalWrite(2,LOW);
digitalWrite(13,LOW);
digitalWrite(4,LOW);
}
}
void volume()
{
int frequency = 1000; // Frekuensi dalam Hertz
int duration = 1000; // 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
}
void volume2()
{
int frequency = 750; // Frekuensi dalam Hertz
int duration = 1000; // 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
}