const int ledPin1 = 12;      // GPIO 18 для першого світлодіода
const int ledPin2 = 14;      // GPIO 19 для другого світлодіода
const int ledPin3 = 15;      // GPIO 21 для третього світлодіода

const int fadeTime = 3000;       // Час засвічування/загасання 3 сек (3000 мс)
const int maxDutyCycle = 255;    // Максимальний рівень ШІМ

void setup() {
  // Налаштування пінів на вихід
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
}

void loop() {
  // Засвічування та загасання світлодіодів по черзі

  // Засвічування та загасання LED1
  fadeInOut(ledPin1);

  // Засвічування та загасання LED2
  fadeInOut(ledPin2);

  // Засвічування та загасання LED3
  fadeInOut(ledPin3);
}

// Функція для плавного засвічування/загасання світлодіода
void fadeInOut(int ledPin) {
  // Засвічування (від 0 до 255)
  for (int dutyCycle = 0; dutyCycle <= maxDutyCycle; dutyCycle += 5) {
    analogWrite(ledPin, dutyCycle);
    delay(fadeTime / (maxDutyCycle / 5));  // Менший крок та затримка для плавного засвічування
  }

  // Загасання (від 255 до 0)
  for (int dutyCycle = maxDutyCycle; dutyCycle >= 0; dutyCycle -= 5) {
    analogWrite(ledPin, dutyCycle);
    delay(fadeTime / (maxDutyCycle / 5));  // Менший крок та затримка для плавного загасання
  }
}