//Nama : Muhammad Farchan Setyawan
//NIM : 1002210072
//Prodi : TI - Karyawan
//Tanggal : 21/05/2024
// program ini adalah program traffic light
// user dapat menekan tombol hijau sebelah kanan mikrocontroller untuk
// memulai system. dan tombol merah di atas mikrokontroller untuk
// stop atau reset system
// setiap step lampu, status akan di tampilkan di status bar di bawah
// mikrokontroller.
// misal lampu merah menyala artinya berhenti
// lampu kuning menyala artinya hati2
// dan seterusnya
int merah = 32;
int kuning = 25;
int hijau = 12;
int pb_button = 35;
int pb_button2 = 34;
int start_stop = 0;
int test = 22;
int test2 = 23;
unsigned long timeOn_merah = 1000;
unsigned long timeOn_kuning = 250;
unsigned long timeOn_hijau = 2000;
unsigned long changeTime_merah = 0;
unsigned long changeTime_kuning = 0;
unsigned long changeTime_hijau = 0;
bool ledValue = false;
int i=0;
int naik=0;
void setup() {
Serial.begin(115200);
Serial.println("");
Serial.println("");
Serial.println("==========================");
Serial.println("System Traffic Light Ready");
Serial.println("==========================");
Serial.println("");
Serial.println("");
pinMode(merah, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(hijau, OUTPUT);
pinMode(test, OUTPUT);
pinMode(test2, OUTPUT);
pinMode(pb_button, INPUT); //Start System
pinMode(pb_button2, INPUT); //Stop System
start_stop=0;
ledValue=false;
naik=0;
changeTime_merah = 0;
changeTime_kuning = 0;
changeTime_hijau = 0;
}
void loop() {
digitalWrite(test, digitalRead(pb_button));
digitalWrite(test2, digitalRead(pb_button2));
if (digitalRead(pb_button)==HIGH){
if (start_stop == 0) {
start_stop =1;
digitalWrite(merah, HIGH);
changeTime_merah = millis() + timeOn_merah;
Serial.println("Lampu Merah : Berhenti");
naik=0;
}
}
if (digitalRead(pb_button2)==HIGH){
start_stop =0;
naik=0;
i=0;
digitalWrite(merah, LOW);
digitalWrite(kuning, LOW);
digitalWrite(hijau, LOW);
}
if (start_stop == 1){
if (naik==0){
if (millis() >= changeTime_merah) {
digitalWrite(merah, LOW);
changeTime_kuning = millis() + timeOn_kuning;
Serial.println("Lampu Kuning : Hati-hati");
naik=1;
}
}
if (naik==1){
if (i<8){
if (millis() >= changeTime_kuning) {
ledValue = !ledValue;
digitalWrite(kuning, ledValue);
changeTime_kuning = millis() + timeOn_kuning;
i=i+1;
}
} else{
naik=2;
digitalWrite(kuning, LOW);
digitalWrite(hijau, HIGH);
changeTime_hijau = millis() + timeOn_hijau;
Serial.println("Lampu Hijau : Jalan");
}
}
if (naik==2){
if (millis() >= changeTime_hijau) {
digitalWrite(hijau, LOW);
changeTime_kuning = millis() + timeOn_kuning;
Serial.println("Selesai");
naik=4;
}
}
}
}