Dúvidas iniciais

Pessoal, boa tarde! Sou novo com o arduino então optei por começar lendo o livro Arduino básico do Michael McRoberts. No inicio correu tudo bem consegui entender e simular os projetos, mas cheguei em um ponto que estou com algumas dúvidas não entendi perfeitamente oque quer dizer o código... segue abaixo:
// Projeto 5 – Efeito de iluminação sequencial com LEDs
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // cria um array para os pinos dos LEDs
int ledDelay(65); // intervalo entre as alterações
int direction = 1; (não entendi como esta váriavel determina o sentido dos leds)
int currentLED = 0;
unsigned long changeTime;
void setup() {
for (int x=0; x<10; x++) { // define todos os pinos como saída
pinMode(ledPin[x], OUTPUT); }
changeTime = millis();
}
void loop() {
if ((millis() - changeTime) > ledDelay) { // verifica se já transcorreram ledDelay ms desde
// a última alteração
changeLED();
changeTime = millis();
}
}
void changeLED() {
for (int x=0; x<10; x++) { // apaga todos os LEDs
digitalWrite(ledPin[x], LOW);
}
digitalWrite(ledPin[currentLED], HIGH); // acende o LED atual
currentLED += direction; // incrementa de acordo com o valor de direction
// altera a direção se tivermos atingido o fim
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
}
E se possível também como funciona a função millis?
Para resumir então, deste código que coloquei para vocês apenas não entendi como a váriavel direction determina a direção do led e a última condição abaixo do (curruentLED==9 ) {direction =-1}

Bom, agradeço desde já!

Ola bem vindo.
Pra começar tens um botao insert Code ( # )para formatar melhor o código pois tentar ler e entender da forma que o tens não e fácil.

int direction = 1; (não entendi como esta váriavel determina o sentido dos leds)

Apesar de haver formas mais eficientes de fazer correr a sequencia do array byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; o que o autor quis fazer for ir somando a posiçao do array quando é chamada no procedimento changeLED()
Dentro do changeLED tens :

currentLED += direction; // incrementa de acordo com o valor de direction
// altera a direção se tivermos atingido o fim
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}

Que faz com que incremente o valor de currentLED e quando este atinge o máximo inverta ( passou para -1) e faça o inverso entao

E se possível também como funciona a função millis?

A funçao millis() devolve-te um unsigned long que contem o valor em milissegundos desde que o teu avr iniciou o programa ( desde quando recebeu alimentação pra simplificar).
Ele conta o tempo com recurso a um temporizador interno que quando atinge um certo valor( 1 milisegundo) causa uma interrupção e incrementa o valor dos milissegundos.Podes usar este valor para fazer açoes do tipo se ja passaram 10 segundos vou fazer isto...
Tu estas a usa-la aqui:
if ((millis() - changeTime) > ledDelay)//Se o tempo actual menos o tempo de intervalo for maior que o que quero entao vou correr a funçao xxx

Hugo muito obrigado pela explicação.
Agora sempre que eu obter alguma dúvida é necessário abrir um novo tópico?
E quando está dúvida for sanada eu devo apagar o tópico?

E mais uma vez obrigado!

Agora sempre que eu obter alguma dúvida é necessário abrir um novo tópico?

Sim claro.Se nada tiver a ver com este abres um novo topico.

E quando está dúvida for sanada eu devo apagar o tópico?

Não.Claro que não.A finalidade do fórum é ajudar quem precisa, hoje foste tu a necessitar de ajuda mas amanha alguém com a mesma duvida que tu, pode ler e entender a tua duvida e qual foi a solução. É este espírito de entre ajuda que me leva a ajudar todos os membros pois muitas vezes eu acho as respostas para as minhas duvidas lendo posts de outros colegas do fórum.
Bons estudos

ok... Obrigado!!!!!!!!