fala ai giovannimundim!
Como prometi, parei para dar uma olhada no teu código ^^
Pelo que entendi você quer o efeito de uma bola quicando, então a direção inicial seria -1 e o led seria o cinco.
1) Então a bola cai:
a direção caindo (direction = -1)
de cima para baixo (currentLED = 5)
a referencia da altura é a que a bola foi solta (y = 5)
a cada loop adicionamos - 1 (currentLED += direction)
gerando o efeito led 5, led 4, led 3, led 2, led 1, led 0
2) A bola chega ao chão (led 0):
neste momento podemos determinar a ação da gravidade, ou seja, a bola só chegará até a altura 4 (y = y -1, ou y--)
a bola quica, mudamos a direção (direction = -1)
a cada loop adicionamos +1 (currentLED += direction)
gerando o efeito led 0, led 1, led 2, led 3, led 4
então a bola perde a força e cai (e o loop continua de 4 até 0, 0 até 3, 3 até 0, 0 até 2, 2 até 0, zero até 1 e começa novamente)
Veja como ficou o código com a lógica acima:
byte ledPin[] = {8, 9, 10, 11, 12, 13};
int currentLED = 5;
int y = 5;
int ledDelay = 100;
int direction = -1;
unsigned long changetime;
void setup(){
for(int x=0; x < 6;x++){
pinMode(ledPin
}
changetime = millis();
}
void loop(){
if ((millis() - changetime) > ledDelay){
changeLED();
changetime = millis();
}
}
void changeLED(){
for (int x=0; x < 6; x++){
digitalWrite(ledPin
}
currentLED += direction;
digitalWrite(ledPin[currentLED], HIGH);
if (direction == 1)
{
if (currentLED == y){direction = -1;}
}
else //direction == -1
{
if (currentLED == 0){
direction = 1;
y--;
if (y == 0)
y = 5;
}
}
}
Repare que o que faltava no teu código era:
1) colocar o y como variável global
2) considerar que o y só muda quando a bola bate no chão (direction -1 e currentLED = 0) e não cada vez que ocorre o loop()
com as duas considerações acima foi só acertar o código.
Eu to com preguiça, então rodei o código em um emulador (Virtual Breadboard), se não funcionar no arduíno você me fala rs
Até +