#define UTARA_MERAH 2
#define UTARA_KUNING 3
#define UTARA_HIJAU 4
#define SELATAN_MERAH 5
#define SELATAN_KUNING 6
#define SELATAN_HIJAU 7
#define BARAT_MERAH 8
#define BARAT_KUNING 9
#define BARAT_HIJAU 10
#define TIMUR_MERAH 11
#define TIMUR_KUNING 12
#define TIMUR_HIJAU 13
#define A_TOMBOL_ONOFF A0
#define A_TOMBOL_DURASI A1
#define A_TOMBOL_FORCE1 A2
#define A_TOMBOL_FORCE2 A3
int durasiHijau = 5000;
int durasiKuning = 2000;
int durasiMerah = 1000;
void setup() {
pinMode(A_TOMBOL_ONOFF, INPUT);
pinMode(A_TOMBOL_DURASI, INPUT);
pinMode(A_TOMBOL_FORCE1, INPUT);
pinMode(A_TOMBOL_FORCE2, INPUT);
for (int i = UTARA_MERAH; i <= TIMUR_HIJAU; i++) {
pinMode(i, OUTPUT);
}
}
void cekDurasi() {
if (digitalRead(A_TOMBOL_DURASI) == HIGH) {
durasiHijau = 10000;
} else {
durasiHijau = 5000;
}
}
void matikanSemuaLampu() {
for (int i = UTARA_MERAH; i <= TIMUR_HIJAU; i++) {
digitalWrite(i, LOW);
}
}
void normal() {
cekDurasi();
matikanSemuaLampu();
digitalWrite(UTARA_HIJAU, HIGH);
digitalWrite(SELATAN_MERAH, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_MERAH, HIGH);
delay(durasiHijau);
matikanSemuaLampu();
digitalWrite(UTARA_KUNING, HIGH);
digitalWrite(SELATAN_MERAH, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_MERAH, HIGH);
delay(durasiKuning);
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_MERAH, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_MERAH, HIGH);
delay(durasiMerah);
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_HIJAU, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_MERAH, HIGH);
delay(durasiHijau);
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_KUNING, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_MERAH, HIGH);
delay(durasiKuning);
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_MERAH, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_MERAH, HIGH);
delay(durasiMerah);
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_MERAH, HIGH);
digitalWrite(BARAT_HIJAU, HIGH);
digitalWrite(TIMUR_MERAH, HIGH);
delay(durasiHijau);
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_MERAH, HIGH);
digitalWrite(BARAT_KUNING, HIGH);
digitalWrite(TIMUR_MERAH, HIGH);
delay(durasiKuning);
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_MERAH, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_MERAH, HIGH);
delay(durasiMerah);
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_MERAH, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_HIJAU, HIGH);
delay(durasiHijau);
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_MERAH, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_KUNING, HIGH);
delay(durasiKuning);
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_MERAH, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_MERAH, HIGH);
delay(durasiMerah);
}
void force1(){
if (digitalRead(A_TOMBOL_FORCE1) == HIGH) {
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_HIJAU, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_MERAH, HIGH);
}
}
void force2(){
if (digitalRead(A_TOMBOL_FORCE2) == HIGH) {
matikanSemuaLampu();
digitalWrite(UTARA_MERAH, HIGH);
digitalWrite(SELATAN_MERAH, HIGH);
digitalWrite(BARAT_MERAH, HIGH);
digitalWrite(TIMUR_HIJAU, HIGH);
}
}
void upnormal() {
// Kondisi tombol A_TOMBOL_ONOFF tidak ditekan
matikanSemuaLampu();
digitalWrite(UTARA_KUNING, HIGH);
digitalWrite(SELATAN_KUNING, HIGH);
digitalWrite(BARAT_KUNING, HIGH);
digitalWrite(TIMUR_KUNING, HIGH);
delay(200);
matikanSemuaLampu();
digitalWrite(UTARA_KUNING, LOW);
digitalWrite(SELATAN_KUNING, LOW);
digitalWrite(BARAT_KUNING, LOW);
digitalWrite(TIMUR_KUNING, LOW);
delay(100);
}
void loop() {
if (digitalRead(A_TOMBOL_ONOFF) == HIGH) {
normal();
force1();
force2();
} else {
upnormal();
}
}