Perchè il ciclo 4 da problemi?

Buon Natale a tutto il forum.

Ho creato un semplice sketch di 4 led che accendono in modo causale uno alla volta o tutti insieme.
dal ciclo 0 a 3 non ho problemi, ottengo quello che voglio, cioè un led per volta acceso, ma quando inserisco il ciclo 4, accendono tutti insieme ed è corretto ma non accendono più uno per volta o meglio sfarfallano per una frazione di secondo in modo causale, ma non resta un colore per volta acceso per il secondo del delay.
Mentre se cancello il ciclo 4 ogni colore accende uno per volta per 1 secondo, perché?

Grazie a tutti.

#define BLU 5     // porta analogica
#define ROSSO 10  // porta analogica
#define VERDE 9   // porta analogica
#define GIALLO 7  // porta digitale
#define UV 6      // porta analogica

// VARIABILI CICLO LAMPEGGIO
int ciclo;
// VARIABILI RGB
void setup() {
  random(analogRead(A0));
  pinMode(VERDE, OUTPUT);
  pinMode(GIALLO, OUTPUT);
  pinMode(BLU, OUTPUT);
  pinMode(ROSSO, OUTPUT);
  pinMode(UV, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  PSICHEDELICHE();
  LED_UV();
}
// LED UV ILLUMINAZIONE LOGO
void LED_UV(){
analogWrite(UV, 255);
}
// INIZIO CLICLO PSICHEDELICHE
void PSICHEDELICHE(){
  ciclo = 0;
  ciclo += random(0,5);
  if(ciclo == 0){
    analogWrite(VERDE, 30);
  }
      else{
        analogWrite(VERDE, 0);
      }
         if(ciclo == 1){
    digitalWrite(GIALLO, HIGH);
  }
      else{
        digitalWrite(GIALLO, LOW);
      }
         if(ciclo == 2){
    analogWrite(BLU, 30);
  }
      else{
        analogWrite(BLU, 0);
      }
         if(ciclo == 3){
    digitalWrite(ROSSO, HIGH);
  }
      else{
        digitalWrite(ROSSO, LOW);
      }
      if(ciclo == 4){
        digitalWrite(VERDE, HIGH);
        digitalWrite(GIALLO, HIGH);
        digitalWrite(BLU, HIGH);
        digitalWrite(ROSSO, HIGH);
      }
      else{
        digitalWrite(VERDE, LOW);
        digitalWrite(GIALLO, LOW);
        digitalWrite(BLU, LOW);
        digitalWrite(ROSSO, LOW);
      }
      Serial.println("ciclo:  ");
      Serial.print(ciclo);
         delay(1000);

Il problema è che comandi contemporaneamente le stesse uscite da punti diversi del programma. In particolare nell'if del ciclo 4 spegni sempre tutti i LED prima del delay anche se uno di loro era stato acceso dagli if precedenti.

Claudio_FF:
Il problema è che comandi contemporaneamente le stesse uscite da punti diversi del programma. In particolare nell'if del ciclo 4 spegni sempre tutti i LED prima del delay anche se uno di loro era stato acceso dagli if precedenti.

Grazie risolto, ho tolto l'ultimo else ed adesso va tutto come volevo :slight_smile:
Ancora grazie