Necesito realizar que los LED en AMBOS extremos de la tira comiencen como encendidos, luego muévelos uno hacia el otro, que parezca que rebotan entre sí, y luego regresan al final.
He realizado el siguiente codigo.
Lo que sucede es que cada uno va para un lado y no coinciden en el mismo punto.
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int ledDelay(65); // retraso entre tiempos
int sentido = 1;
int ledActual = 0;
int ledAnterior=6;
int ledAnterior2=10;
unsigned long marcaTiempo;
void setup() {
for (int x=0; x<10; x++) { // Ajustar los pines como de salida.
pinMode(ledPin[x], OUTPUT); }
marcaTiempo = millis();
}
void loop() {
if ((millis() - marcaTiempo) > ledDelay) {
cambiarLed();
marcaTiempo = millis();
}
}
void cambiarLed() {
for (int x=0; x<6; x++) { // Apagamos los leds
digitalWrite(ledPin[x], LOW);
}
digitalWrite(ledPin[ledActual],HIGH); // Enciendo el led actual
ledActual += sentido; // Pado al siguiente led
// Cambio el sentido del movimiento si he llegado al principio
// o al fin de la tira de leds.
if (ledActual == 5) {sentido = -1;}
if (ledActual == 0) {sentido = 1;}
for (int x=6; x<10; x++) { // Apagamos los leds
digitalWrite(ledPin[x], LOW);
}
digitalWrite(ledPin[ledAnterior],HIGH); // Enciendo el led actual
ledAnterior+= sentido; // Pado al siguiente led
// Cambio el sentido del movimiento si he llegado al principio
// o al fin de la tira de leds.
if (ledAnterior2 == 6) {sentido = -1;}
if (ledAnterior == 0) {sentido = 1;}
}