int led_pins[] = {15,2,4,5,18,19,21,22};
int num_leds = sizeof(led_pins)/sizeof(int);

void setup() {
  Serial.begin(115200);
  for ( int i=0; i<num_leds; i++ ) {
    ledcSetup(i, 5000, 8);
  }
}

int leda = 3;
int ledb = 2;
int ledc = 1;
int ledd = 0;

void loop() {
  
  for (int j = 0;j<num_leds;j++){
    Serial.print("---------------------------------------------------------\n");
    if(leda==num_leds){
      leda = 0; 
    }
    if(ledb==num_leds){
      ledb = 0; 
    }
    if(ledc==num_leds){
      ledc = 0; 
    }
    if(ledd==num_leds){
      ledd = 0; 
    }

    ledcAttachPin(led_pins[leda], leda);
    ledcWrite(leda,255); //100%255
    Serial.printf( "leda: %d\n", leda );

    ledcAttachPin(led_pins[ledb], ledb);
    ledcWrite(ledb,191.25); //75%191.25
    Serial.printf( "ledb: %d\n", ledb );

    ledcAttachPin(led_pins[ledc], ledc);
    ledcWrite(ledc,127.5); //50%127.5
    Serial.printf( "ledc: %d\n", ledc );

    ledcAttachPin(led_pins[ledd], ledd);
    ledcWrite(ledd,1); //25%63.75
    Serial.printf( "ledd: %d\n", ledd );

    delay(500);
    ledcDetachPin(led_pins[leda]);
    ledcDetachPin(led_pins[ledb]);
    ledcDetachPin(led_pins[ledc]);
    ledcDetachPin(led_pins[ledd]);
    
    leda++;
    ledb++;
    ledc++;
    ledd++;
  }
}
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
led5:A
led5:C
led6:A
led6:C
led7:A
led7:C
led8:A
led8:C
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
r5:1
r5:2
r6:1
r6:2
r7:1
r7:2
r8:1
r8:2