#include <Servo.h>
// Pin untuk servo pada masing-masing jalur
// Simpang 1
const int servoPin1 = A0;
const int servoPin2 = A1;
const int servoPin3 = A2;
const int servoPin4 = A3;
//Simpang 2
const int servoPin5 = A4;
const int servoPin6 = A5;
const int servoPin7 = A6;
const int servoPin8 = A7;
// Pin untuk lampu lalu lintas pada masing-masing jalur
// Simpang 1
const int redPin1 = 1;
const int yellowPin1 = 2;
const int greenPin1 = 3;
const int redPin2 = 4;
const int yellowPin2 = 5;
const int greenPin2 = 6;
const int redPin3 = 7;
const int yellowPin3 = 8;
const int greenPin3 = 9;
const int redPin4 = 10;
const int yellowPin4 = 11;
const int greenPin4 = 12;
//Simpang 2
const int redPin5 = 13;
const int yellowPin5 = 14;
const int greenPin5 = 15;
const int redPin6 = 16;
const int yellowPin6 = 17;
const int greenPin6 = 18;
const int redPin7 = 19;
const int yellowPin7 = 20;
const int greenPin7 = 21;
const int redPin8 = 22;
const int yellowPin8 = 23;
const int greenPin8 = 24;
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
Servo servo7;
Servo servo8;
void setup() {
// Inisialisasi pin servo
servo1.attach(servoPin1);
servo2.attach(servoPin2);
servo3.attach(servoPin3);
servo4.attach(servoPin4);
servo5.attach(servoPin5);
servo6.attach(servoPin6);
servo7.attach(servoPin7);
servo8.attach(servoPin8);
// Inisialisasi pin lampu lalu lintas
// Simpang 1
pinMode(redPin1, OUTPUT);
pinMode(yellowPin1, OUTPUT);
pinMode(greenPin1, OUTPUT);
pinMode(redPin2, OUTPUT);
pinMode(yellowPin2, OUTPUT);
pinMode(greenPin2, OUTPUT);
pinMode(redPin3, OUTPUT);
pinMode(yellowPin3, OUTPUT);
pinMode(greenPin3, OUTPUT);
pinMode(redPin4, OUTPUT);
pinMode(yellowPin4, OUTPUT);
pinMode(greenPin4, OUTPUT);
// Simpang 2
pinMode(redPin5, OUTPUT);
pinMode(yellowPin5, OUTPUT);
pinMode(greenPin5, OUTPUT);
pinMode(redPin6, OUTPUT);
pinMode(yellowPin6, OUTPUT);
pinMode(greenPin6, OUTPUT);
pinMode(redPin7, OUTPUT);
pinMode(yellowPin7, OUTPUT);
pinMode(greenPin7, OUTPUT);
pinMode(redPin8, OUTPUT);
pinMode(yellowPin8, OUTPUT);
pinMode(greenPin8, OUTPUT);
digitalWrite(1, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
digitalWrite(10, HIGH);
digitalWrite(13, HIGH);
digitalWrite(16, HIGH);
digitalWrite(19, HIGH);
digitalWrite(22, HIGH);
delay (1000);
}
void loop() {
jalan_utara ();
delay(1500);
jalan_barat ();
delay(1500);
jalan_selatan ();
delay(1500);
jalan_timur ();
delay(1500);
}
void jalan_utara () {
// Hijau menyala
digitalWrite(redPin1, LOW);
digitalWrite(yellowPin1, LOW);
digitalWrite(greenPin1, HIGH);
digitalWrite(redPin5, LOW);
digitalWrite(yellowPin5, LOW);
digitalWrite(greenPin5, HIGH);
servo1.write(0);
servo5.write(0);
delay(5000);
//Kuning menyala
digitalWrite(redPin1, LOW);
digitalWrite(yellowPin1, HIGH);
digitalWrite(greenPin1, LOW);
digitalWrite(redPin5, LOW);
digitalWrite(yellowPin5, HIGH);
digitalWrite(greenPin5, LOW);
delay(2000);
//Merah menyala
digitalWrite(redPin1, HIGH);
digitalWrite(yellowPin1, LOW);
digitalWrite(greenPin1, LOW);
digitalWrite(redPin5, HIGH);
digitalWrite(yellowPin5, LOW);
digitalWrite(greenPin5, LOW);
servo1.write(90);
servo5.write(90);
}
void jalan_barat () {
//Hijau menyala
digitalWrite(redPin2, LOW);
digitalWrite(yellowPin2, LOW);
digitalWrite(greenPin2, HIGH);
digitalWrite(redPin6, LOW);
digitalWrite(yellowPin6, LOW);
digitalWrite(greenPin6, HIGH);
servo2.write(0);
servo6.write(0);
delay(5000);
//Kuning menyala
digitalWrite(redPin2, LOW);
digitalWrite(yellowPin2, HIGH);
digitalWrite(greenPin2, LOW);
digitalWrite(redPin6, LOW);
digitalWrite(yellowPin6, HIGH);
digitalWrite(greenPin6, LOW);
delay(2000);
//Merah menyala
digitalWrite(redPin2, HIGH);
digitalWrite(yellowPin2, LOW);
digitalWrite(greenPin2, LOW);
digitalWrite(redPin6, HIGH);
digitalWrite(yellowPin6, LOW);
digitalWrite(greenPin6, LOW);
servo2.write(90);
servo6.write(90);
}
void jalan_selatan () {
//Hijau menyala
digitalWrite(redPin3, LOW);
digitalWrite(yellowPin3, LOW);
digitalWrite(greenPin3, HIGH);
digitalWrite(redPin7, LOW);
digitalWrite(yellowPin7, LOW);
digitalWrite(greenPin7, HIGH);
servo3.write(0);
servo7.write(0);
delay(5000);
//Kuning menyala
digitalWrite(redPin3, LOW);
digitalWrite(yellowPin3, HIGH);
digitalWrite(greenPin3, LOW);
digitalWrite(redPin7, LOW);
digitalWrite(yellowPin7, HIGH);
digitalWrite(greenPin7, LOW);
delay(2000);
//Merah menyala
digitalWrite(redPin3, HIGH);
digitalWrite(yellowPin3, LOW);
digitalWrite(greenPin3, LOW);
digitalWrite(redPin7, HIGH);
digitalWrite(yellowPin7, LOW);
digitalWrite(greenPin7, LOW);
servo3.write(90);
servo7.write(90);
}
void jalan_timur () {
//jalur timur
//Hijau menyala
digitalWrite(redPin4, LOW);
digitalWrite(yellowPin4, LOW);
digitalWrite(greenPin4, HIGH);
digitalWrite(redPin8, LOW);
digitalWrite(yellowPin8, LOW);
digitalWrite(greenPin8, HIGH);
servo4.write(0);
servo8.write(0);
delay(5000);
//Kuning menyala
digitalWrite(redPin4, LOW);
digitalWrite(yellowPin4, HIGH);
digitalWrite(greenPin4, LOW);
digitalWrite(redPin8, LOW);
digitalWrite(yellowPin8, HIGH);
digitalWrite(greenPin8, LOW);
delay(2000);
//Merah menyala
digitalWrite(redPin4, HIGH);
digitalWrite(yellowPin4, LOW);
digitalWrite(greenPin4, LOW);
digitalWrite(redPin8, HIGH);
digitalWrite(yellowPin8, LOW);
digitalWrite(greenPin8, LOW);
servo4.write(90);
servo8.write(90);
}