const int redPin = 9;
const int yellowPin = 10;
const int greenPin = 11;

unsigned long previousMillis = 0;
const long interval = 1000;

void setup() {
  Serial.begin(9600);
  pinMode(redPin, OUTPUT);
  pinMode(yellowPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
}

void loop() {
  int redDuration, yellowDuration, greenDuration;

  redDuration = readDuration("Введіть тривалість світіння червоного світлодіода (в секундах): ");
  yellowDuration = readDuration("Введіть тривалість світіння жовтого світлодіода (в секундах): ");
  greenDuration = readDuration("Введіть тривалість світіння зеленого світлодіода (в секундах): ");

  displayColors(redDuration, yellowDuration, greenDuration);
}

int readDuration(const char* prompt) {
  Serial.println(prompt);

  while (!Serial.available()) {}
  String inputString = Serial.readStringUntil('\n');

  return inputString.toInt();
}

void displayColors(int redDuration, int yellowDuration, int greenDuration) {
  unsigned long currentMillis = millis();

  // Виведення червоного світла
  digitalWrite(redPin, HIGH);
  while (millis() - currentMillis < redDuration * 1000) {
  }
  digitalWrite(redPin, LOW);

  // Виведення жовтого світла
  currentMillis = millis();
  digitalWrite(yellowPin, HIGH);
  while (millis() - currentMillis < yellowDuration * 1000) {
  }
  digitalWrite(yellowPin, LOW);

  // Виведення зеленого світла
  currentMillis = millis();
  digitalWrite(greenPin, HIGH);
  while (millis() - currentMillis < greenDuration * 1000) {
  }
  digitalWrite(greenPin, LOW);
}