int ledPins[] = {3, 5, 6, 9};  // 1~4번 LED 핀 번호

int brightness[4] = {0, 0, 0, 0}; 

int started[4] = {0, 0, 0, 0};  // 각 LED 시작 여부

int delayTime = 3; // 밝기 변화 속도 조절

int dir[4] = {1, 1, 1, 1};      // 밝기 증가(1) / 감소(-1)


void setup() {

  for (int i = 0; i < 4; i++) {

    pinMode(ledPins[i], OUTPUT);

  }

}


void loop() {

  // LED1 (3번 핀) 무조건 동작

  brightness[0] += dir[0];

  if (brightness[0] >= 255 || brightness[0] <= 0) {

    dir[0] = -dir[0];

  }


  // LED1 밝기에 따라 나머지 LED 시작

  if (brightness[0] >= 64)  started[1] = 1;  // LED2 (5번 핀) 25% 지점

  if (brightness[0] >= 128) started[2] = 1;  // LED3 (6번 핀) 50% 지점

  if (brightness[0] >= 192) started[3] = 1;  // LED4 (9번 핀) 75% 지점


  // LED2~LED4 독립 동작

  for (int i = 1; i < 4; i++) {

    if (started[i]) {

      brightness[i] += dir[i];

      if (brightness[i] >= 255 || brightness[i] <= 0) {

        dir[i] = -dir[i];

      }

    }

  }


  // PWM 출력

  for (int i = 0; i < 4; i++) {

    analogWrite(ledPins[i], brightness[i]);

  }


  delay(delayTime);

}



24b0d121e09c28a8699fe8b115ef046540aafe3e