Come posso modificare le funzioni che gestiscono un potenziometro?

Ciao a tutti. Ho appena realizzato il mio primo progetto con Arduino seguendo un manuale (for Dummies) che trovo interessantissimo. Questo è lo schema:

Ho modificato appena un pò il codice in questo modo:

// Chapter 4: The All-Seeing Eye
// Accende una serie di led sequenzialmente
// Variabile per impostare un tempo di ritardo tra ciascun LED
int delayTime = 400;
// Una variabile per memorizzare lo stato attuale del LED 
int currentLED = 4;
// Una variabile per memorizzare la direzione 
int dir = 1;
// Una variabile per memorizzare l'ultima volta che è stato cambiato qualcosa
long timeChanged = 0;
// Un array per contenere il valore di ogni pin dei LED
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
void setup() {
// Imposta tutti i pin per l'uscita
for (int i=0; i<10; i++) {
pinMode(ledPin[i], OUTPUT);
}
// Registra il tempo una volta che il setup è avvenuto
timeChanged = millis();
}
void loop() {
// Verifica se è trascorso il tempo abbastanza a lungo
if ((millis() - timeChanged) > delayTime) {
//disattiva tutti i LED
for (int i=0; i<10; i++) {
digitalWrite(ledPin[i], LOW);
}
// Accende il LED corrente
digitalWrite(ledPin[currentLED], HIGH);
//piccola modifica
//quando si accende il led numero 5
if (currentLED == 4){
//allora accendi uno si e uno no
  for(int i=0; i<10; i++){
    if (i%2==0){
  digitalWrite(ledPin[i], HIGH);
    }   
}
}  
// Incrementa il valore della direzione (su o giù)
currentLED = currentLED + dir;
// Se siamo alla fine della riga, cambia la direzione
if (currentLED == 9) {
dir = -1;
}
if (currentLED == 0) {
dir = 1;
}
//per il potenziometro
//delayTime = analogRead(0);
//delay(5);
// Memorizza il tempo corrente nella variabile timeChanged
timeChanged = millis();
}
}

Ora vorrei capire come funzionano analogReed(0) e delay(5). Con il potenziometro e le funzioni definite in questo modo:

delayTime = analogRead(0);
delay(5);

si può cambiare la velocità di scorrimento dei LED direttamente dal potenziometro, ma se volessi dire che, invece di cambiare la velocità, vorrei accendere un led alla volta con il potenziometro?

HiFi:
si può cambiare la velocità di scorrimento dei LED direttamente dal potenziometro, ma se volessi dire che, invece di cambiare la velocità, vorrei accendere un led alla volta con il potenziometro?

Basta che assegni una soglia per ogni led, quando la lettura del ADC è nel range assegnato accendi il corrispettivo led.
Esempio pratico, con 10 led puoi suddividere la cosa di 100 in 100 count (la lettura ADC varia tra 0 e 1023) in questo modo:

0 - 100 LED 1
101 - 200 LED 2
201 - 300 LED 3
.
.
.
901 - 1023 LED 10

Con una serie di if in cascata all'interno della loop(), è il modo più semplice per implementare la cosa, fai accedere il giusto led in funzione del valore, alla fine è una semplice macchina a stati finiti.

Grazie astrobeed.
Quindi dovrebbe essere scritto più o meno in questo modo?...

.
.
.

int led1 = 0;
int led2 = 101;
int led3 = 201;
int led4 = 301;
int led5 = 401;
.
.
int led10 = 901;

.
.
.
analogRead(led1);
digitalWrite(ledPin[0], HIGH);
analogRead(led2);
digitalWrite(ledPin[1], HIGH);
.
.
analogRead(led10);
digitalWrite(ledPin[9], HIGH);
delay(5);

@HiFi: in conformità al regolamento, punto 7, edita (in basso a destra del post, bottone More → Modify) i tuoi post e racchiudi il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra). Grazie.

Guglielmo