You are on page 1of 3

// Final Project - Padestrian Traffic Lights

int carRed = 4; // menentukan inputan lampu untuk kendaraan

int carYellow = 3;

int carGreen = 2;

int pedRed = 5; // menentukan inputan untuk pejalan kaki

int pedGreen = 6;

int button = 7; // button pin

int crossTime = 5000; // waktu yang diijinkan untuk melakukan penyebrangan

unsigned long changeTime = 0; // waktu terakhir untuk siklus penyebrangan

void setup() {

pinMode(carRed, OUTPUT);

pinMode(carYellow, OUTPUT);

pinMode(carGreen, OUTPUT);

pinMode(pedRed, OUTPUT);

pinMode(pedGreen, OUTPUT);

pinMode(button, INPUT); // button pada pin 2

// menyalakan lampu hijau

digitalWrite(carGreen, HIGH);

digitalWrite(pedRed, HIGH);

void loop() {

int state = digitalRead(button);


/* pengecekan jika button ditekan dan sudah melampaui 5 detik sejak button terakhir ditekan */

if (state == HIGH && (millis() - changeTime) > 5000) {

// Call the function to change the lights

changeLights();

void changeLights() {

digitalWrite(carGreen, LOW); // hijau off

digitalWrite(carYellow, HIGH); // kuning on

delay(2000); // wait 2 seconds

digitalWrite(carYellow, LOW); // kuning off

digitalWrite(carRed, HIGH); // merah on

delay(1000); // tunggu selama 1 detik hingga aman

digitalWrite(pedRed, LOW); // lampu pejalan kaki merah off

digitalWrite(pedGreen, HIGH); // lampu pejalan kaki hijau on

delay(crossTime); // tunggu preset time

// lampu hijau pejalan kaki berkedip

for (int x=0; x<10; x++) {

digitalWrite(pedGreen, HIGH);

delay(250);

digitalWrite(pedGreen, LOW);

delay(250);

}
// lampu merah pejalan kaki on

digitalWrite(pedRed, HIGH);

delay(500);

digitalWrite(carYellow, HIGH); // kuning on

digitalWrite(carRed, LOW); // merah off

delay(1000);

digitalWrite(carGreen, HIGH);

digitalWrite(carYellow, LOW); // kuning off

// merekam waktu sejak terakhir pergantian lampu

changeTime = millis();

// kemudian kembali ke program loop awal