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;
  }
}