const int redPin = 9;           // Пин для красного светодиода
const int yellowPin = 10;       // Пин для желтого светодиода
const int greenPin = 11;        // Пин для зеленого светодиода
const int buttonPin = 6;        // Пин для кнопки пешехода

boolean pedestrianRequest = false;
unsigned long greenStartTime;

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(yellowPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP); // Используем подтяжку к +5V

  // Начальное состояние - зеленый свет
  digitalWrite(greenPin, HIGH);
  greenStartTime = millis();
}

void loop() {
  unsigned long currentTime = millis();
  
  // Проверка состояния кнопки
  if (digitalRead(buttonPin) == LOW) {
    pedestrianRequest = true; // Кнопка нажата
  }

  // Если прошло зеленое время или кнопка нажата и мин. время зел. света прошло
  if ((currentTime - greenStartTime >= 30000) ||
      (pedestrianRequest && currentTime - greenStartTime >= 15000)) {
    processTrafficLightCycle();
  }
}

void processTrafficLightCycle() {
  // Зеленый мигает
  for (int i = 0; i < 6; i++) {
    digitalWrite(greenPin, LOW);
    delay(250);
    digitalWrite(greenPin, HIGH);
    delay(250);
  }
  digitalWrite(greenPin, LOW);
  
  // Желтый свет
  digitalWrite(yellowPin, HIGH);
  delay(3000); // 3 секунды
  digitalWrite(yellowPin, LOW);
  
  // Красный свет
  digitalWrite(redPin, HIGH);
  delay(10000); // 10 секунд
  digitalWrite(redPin, LOW);

  // Вернули зеленый свет
  digitalWrite(greenPin, HIGH);
  greenStartTime = millis(); // Обновляем время старта зеленого света
  
  pedestrianRequest = false; // Сброс запроса пешехода
}
$abcdeabcde151015202530fghijfghij