//Kelompok 3 Praktikum Mikrokontroller dan IoT
const int mrh1 = 25;
const int kng1 = 33;
const int hju1 = 32;
const int mrh2 = 19;
const int kng2 = 18;
const int hju2 = 4;
const int mrh3 = 23;
const int kng3 = 22;
const int hju3 = 21;
const int mrh4 = 14;
const int kng4 = 27;
const int hju4 = 26;
const int jalan = 3000; // Waktu untuk lampu hijau
const int stop = 5000; // Waktu untuk lampu kuning
const int buttonPin = 13; // Pin untuk pushbutton
const int crosswalkTime = 4000; // Waktu untuk penyeberangan (3 detik)
unsigned long lastButtonPress = 0;
bool crosswalkActive = false;
void setup() {
Serial.begin(115200);
Serial.println("TRAFFIC LIGHT 4 JALUR DENGAN PENYEBERANGAN");
pinMode(mrh1, OUTPUT);
pinMode(kng1, OUTPUT);
pinMode(hju1, OUTPUT);
pinMode(mrh2, OUTPUT);
pinMode(kng2, OUTPUT);
pinMode(hju2, OUTPUT);
pinMode(mrh3, OUTPUT);
pinMode(kng3, OUTPUT);
pinMode(hju3, OUTPUT);
pinMode(mrh4, OUTPUT);
pinMode(kng4, OUTPUT);
pinMode(hju4, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Mengatur pin button sebagai input dengan pull-up resistor
}
void loop() {
// Cek tombol penyeberangan
if (digitalRead(buttonPin) == LOW && !crosswalkActive) {
crosswalkActive = true;
lastButtonPress = millis();
Serial.println("Penyeberangan aktif");
// Semua lampu merah
digitalWrite(mrh1, HIGH);
digitalWrite(mrh2, HIGH);
digitalWrite(mrh3, HIGH);
digitalWrite(mrh4, HIGH);
digitalWrite(kng1, LOW);
digitalWrite(kng2, LOW);
digitalWrite(kng3, LOW);
digitalWrite(kng4, LOW);
digitalWrite(hju1, LOW);
digitalWrite(hju2, LOW);
digitalWrite(hju3, LOW);
digitalWrite(hju4, LOW);
delay(crosswalkTime);
crosswalkActive = false;
Serial.println("Penyeberangan selesai");
}
// Siklus normal lampu lalu lintas
if (!crosswalkActive) {
// Lampu hijau ke kiri
digitalWrite(mrh4, LOW); digitalWrite(kng4, LOW); digitalWrite(hju4, HIGH);
digitalWrite(mrh1, HIGH); digitalWrite(kng1, LOW); digitalWrite(hju1, LOW);
digitalWrite(mrh2, HIGH); digitalWrite(kng2, LOW); digitalWrite(hju2, LOW);
digitalWrite(mrh3, HIGH); digitalWrite(kng3, LOW); digitalWrite(hju3, LOW);
delay(jalan);
// Tunggu lampu kuning ke kiri
digitalWrite(mrh4, LOW); digitalWrite(kng4, HIGH); digitalWrite(hju4, LOW);
digitalWrite(mrh1, LOW); digitalWrite(kng1, HIGH); digitalWrite(hju1, LOW);
digitalWrite(mrh2, HIGH); digitalWrite(kng2, LOW); digitalWrite(hju2, LOW);
digitalWrite(mrh3, HIGH); digitalWrite(kng3, LOW); digitalWrite(hju3, LOW);
delay(stop);
// Lampu hijau ke atas
digitalWrite(mrh4, HIGH); digitalWrite(kng4, LOW); digitalWrite(hju4, LOW);
digitalWrite(mrh1, LOW); digitalWrite(kng1, LOW); digitalWrite(hju1, HIGH);
digitalWrite(mrh2, HIGH); digitalWrite(kng2, LOW); digitalWrite(hju2, LOW);
digitalWrite(mrh3, HIGH); digitalWrite(kng3, LOW); digitalWrite(hju3, LOW);
delay(jalan);
// Tunggu lampu kuning ke atas
digitalWrite(mrh4, HIGH); digitalWrite(kng4, LOW); digitalWrite(hju4, LOW);
digitalWrite(mrh1, LOW); digitalWrite(kng1, HIGH); digitalWrite(hju1, LOW);
digitalWrite(mrh2, LOW); digitalWrite(kng2, HIGH); digitalWrite(hju2, LOW);
digitalWrite(mrh3, HIGH); digitalWrite(kng3, LOW); digitalWrite(hju3, LOW);
delay(stop);
// Lampu hijau ke kanan
digitalWrite(mrh4, HIGH); digitalWrite(kng4, LOW); digitalWrite(hju4, LOW);
digitalWrite(mrh1, HIGH); digitalWrite(kng1, LOW); digitalWrite(hju1, LOW);
digitalWrite(mrh2, LOW); digitalWrite(kng2, LOW); digitalWrite(hju2, HIGH);
digitalWrite(mrh3, HIGH); digitalWrite(kng3, LOW); digitalWrite(hju3, LOW);
delay(jalan);
// Tunggu lampu kuning ke kanan
digitalWrite(mrh4, HIGH); digitalWrite(kng4, LOW); digitalWrite(hju4, LOW);
digitalWrite(mrh1, HIGH); digitalWrite(kng1, LOW); digitalWrite(hju1, LOW);
digitalWrite(mrh2, LOW); digitalWrite(kng2, HIGH); digitalWrite(hju2, LOW);
digitalWrite(mrh3, LOW); digitalWrite(kng3, HIGH); digitalWrite(hju3, LOW);
delay(stop);
// Lampu hijau ke bawah
digitalWrite(mrh4, HIGH); digitalWrite(kng4, LOW); digitalWrite(hju4, LOW);
digitalWrite(mrh1, HIGH); digitalWrite(kng1, LOW); digitalWrite(hju1, LOW);
digitalWrite(mrh2, HIGH); digitalWrite(kng2, LOW); digitalWrite(hju2, LOW);
digitalWrite(mrh3, LOW); digitalWrite(kng3, LOW); digitalWrite(hju3, HIGH);
delay(jalan);
// Tunggu lampu kuning ke bawah
digitalWrite(mrh4, LOW); digitalWrite(kng4, HIGH); digitalWrite(hju4, LOW);
digitalWrite(mrh1, HIGH); digitalWrite(kng1, LOW); digitalWrite(hju1, LOW);
digitalWrite(mrh2, HIGH); digitalWrite(kng2, LOW); digitalWrite(hju2, LOW);
digitalWrite(mrh3, LOW); digitalWrite(kng3, HIGH); digitalWrite(hju3, LOW);
delay(stop);
}
}