ciclo for: non lo esegue dove sbaglio?

Ciao a tutti,
sto provando lo schema “semaforo” con i classici 3 led verde -giallo -rosso : non riesco a capire perchè non esegue le istruzioni del ciclo “for” ( cioè il led giallo non lampeggia 10 volte) il programma è il seguente:

int redPin = 10;//led connesso al pin digitale 10
int yellowPin = 9;//led connesso al pin digitale 9
int greenPin = 8;//led connesso al pin digitale 8
void setup() { //ripeti una sola volta quando il programma inizia
pinMode(redPin, OUTPUT);//imposta il pin come uscita
pinMode(yellowPin, OUTPUT);//imposta il pin come uscita
pinMode(greenPin, OUTPUT);//imposta il pin come uscita
}
void loop() {  //esegui più volte
digitalWrite(redPin, LOW);// imposta il pin digitale a livello basso
digitalWrite(greenPin, HIGH);// imposta il pin digitale a livello alto
digitalWrite(yellowPin,LOW);//imposta il pin digitale a livello basso
delay(10000);//attende 10 secondi
digitalWrite(greenPin,LOW);//imposta il pin digitale a livello basso
for(int x = 0; x < 10; x++) { //ripeti 10 volte 
digitalWrite(yellowPin,HIGH);//imposta il pin digitale a livello alto 
delay(500);//attende 500ms 
digitalWrite(yellowPin,LOW);//imposta il pin digitale a livello basso 
}
digitalWrite(yellowPin, LOW); // imposta il pin digitale a livello basso
digitalWrite(greenPin, LOW); // imposta il pin digitale a livello basso
digitalWrite(redPin, HIGH); //imposta il pin digitale a livello alto
delay(10000); // attendi 10 secondi
}

ho provato a sostituire il ciclo "for"con una serie di digitalWrite(yellowPin, LOW/high) e così funziona
ma sono curioso di sapere cosa sbaglio …

grazie

Marco

Commenti sono utili ma non fatti come in questo caso dove fanno diventare il codice illegibile. Meno é meglio.

for(int x = 0; x < 10; x++)            //ripeti 10 volte 
 { 
digitalWrite(yellowPin,HIGH);
delay(500); 
digitalWrite(yellowPin,LOW);
}

Il problema é che attendi 0,5 secondi per far verder il LED acceso ma 0 secondi per farlo vedere spento.

il codice giusto é

for(int x = 0; x < 10; x++)            //ripeti 10 volte 
 { 
digitalWrite(yellowPin,HIGH);
delay(500); 
digitalWrite(yellowPin,LOW);
delay(500);
}

Ciao Uwe

Perfetto

grazie mille

ciao

Ed inoltre senza indentazione non si capiscono i blocchi di codice:

void loop() {  
    digitalWrite(redPin, LOW);
    digitalWrite(greenPin, HIGH);
    digitalWrite(yellowPin,LOW);
    delay(10000);
    digitalWrite(greenPin,LOW);
    for(int x = 0; x < 10; x++) { 
        digitalWrite(yellowPin,HIGH);
        delay(500);//attende 500ms 
        digitalWrite(yellowPin,LOW);
        delay(500);
    }
    digitalWrite(yellowPin, LOW);
    digitalWrite(greenPin, LOW);
    digitalWrite(redPin, HIGH);
    delay(10000); 
}

Giusto , in effetti il tutto diventa + leggibile.

grazie

Per l'indentazione con l'IDE di Arduino vai su "strumenti" --> "formattazione automatica" oppure premi CTRL + t