int led_red = 12;
int led_yellow = 11;
int led_green = 10;
int led_red_yaya = 4;
int led_green_yaya = 3;
int pin_btn = 2;
unsigned long araba_sari_yaya_kirmizi_sure = 2000L;
unsigned long araba_kirmizi_yaya_kirmizi_sure = 2000L;
unsigned long araba_kirmizi_yaya_yesil_sure = 4000L;
unsigned long araba_kirmizi_yaya_kirmizi_sure_2 = 1000L;
unsigned long araba_kirmizi_sari_yaya_kirmizi_sure = 2000L;
unsigned long araba_min_yesil_sure = 9000L;
int state_var = 0;
int buton_basildi_mi = 0;
unsigned long previous_millis = 0;
void setup() {
state_var = 0;
buton_basildi_mi =0;
previous_millis = 0;
// Dijital girişler ayarlanacak
/***************************************
| I/O Ayarları
****************************************/
digitalWrite(led_red, LOW);
digitalWrite(led_yellow, LOW);
digitalWrite(led_green, HIGH);
digitalWrite(led_red_yaya, HIGH);
digitalWrite(led_green_yaya, LOW);
pinMode(led_red, OUTPUT);
pinMode(led_yellow, OUTPUT);
pinMode(led_green, OUTPUT);
pinMode(led_red_yaya, OUTPUT);
pinMode(led_green_yaya, OUTPUT);
pinMode(pin_btn, INPUT_PULLUP);
}
void loop() {
/********************************************
* Trafik ışıkları
* Kırmızı , Kırmızı-Sarı, Yeşil, Sarı
Sırasında yakılacak
********************************************/
if(digitalRead(pin_btn)==LOW){
buton_basildi_mi = 1;
}
switch( state_var){
case 0: // buton basılabilir
if(buton_basildi_mi == 1){
state_var = 1;
previous_millis = millis();
digitalWrite(led_red, LOW);
digitalWrite(led_yellow, HIGH);
digitalWrite(led_green, LOW);
digitalWrite(led_red_yaya, HIGH);
digitalWrite(led_green_yaya, LOW);
}
break;
case 1:
if(millis()-previous_millis >= araba_sari_yaya_kirmizi_sure){
state_var = 2;
previous_millis = millis();
digitalWrite(led_red, HIGH);
digitalWrite(led_yellow, LOW);
digitalWrite(led_green, LOW);
digitalWrite(led_red_yaya, HIGH);
digitalWrite(led_green_yaya, LOW);
}
break;
case 2:
if(millis()-previous_millis >= araba_kirmizi_yaya_kirmizi_sure){
state_var = 3;
previous_millis = millis();
digitalWrite(led_red, HIGH);
digitalWrite(led_yellow, LOW);
digitalWrite(led_green, LOW);
digitalWrite(led_red_yaya, LOW);
digitalWrite(led_green_yaya, HIGH);
}
break;
case 3:
if(millis()-previous_millis >= araba_kirmizi_yaya_yesil_sure){
state_var = 4;
previous_millis = millis();
buton_basildi_mi = 0; // Yaya tekrar butona basabilir
digitalWrite(led_red, HIGH);
digitalWrite(led_yellow, LOW);
digitalWrite(led_green, LOW);
digitalWrite(led_red_yaya, HIGH);
digitalWrite(led_green_yaya, LOW);
}
break;
case 4:
if(millis()-previous_millis >= araba_kirmizi_yaya_kirmizi_sure_2){
state_var = 5;
previous_millis = millis();
digitalWrite(led_red, HIGH);
digitalWrite(led_yellow, HIGH);
digitalWrite(led_green, LOW);
digitalWrite(led_red_yaya, HIGH);
digitalWrite(led_green_yaya, LOW);
}
break;
case 5:
if(millis()-previous_millis >= araba_kirmizi_sari_yaya_kirmizi_sure){
state_var = 6;
previous_millis = millis();
digitalWrite(led_red, LOW);
digitalWrite(led_yellow, LOW);
digitalWrite(led_green, HIGH);
digitalWrite(led_red_yaya, HIGH);
digitalWrite(led_green_yaya, LOW);
}
break;
case 6:
if(millis()-previous_millis >= araba_min_yesil_sure){
state_var = 0;
}
break;
}
}