
Video
Diagrama del circuito

Código fuente
1int ledPins[] = {2, 3, 4, 5, 6, 7};
2
3void setup() {
4 for(int i = 0; i < 6; i++) {
5 pinMode(ledPins[i], OUTPUT);
6 }
7}
8
9void loop() {
10 for(int i = 0; i < 6; i++) {
11 digitalWrite(ledPins[i], HIGH);
12 delay(100);
13 digitalWrite(ledPins[i], LOW);
14 }
15
16 for(int i = 4; i > 0; i--) {
17 digitalWrite(ledPins[i], HIGH);
18 delay(100);
19 digitalWrite(ledPins[i], LOW);
20 }
21}Preguntas frecuentes
¿Cómo se produce el efecto «Karaşimşek» (Knight Rider)?▾
Los LED se encienden primero de izquierda a derecha y luego de derecha a izquierda, uno tras otro. Se ejecutan dos ciclos seguidos; como el segundo ciclo cuenta en sentido contrario, la luz va y viene.
Parece que los LED de los extremos parpadean dos veces, ¿cómo lo soluciono?▾
Si el ciclo de rotación vuelve a encender el LED del extremo, ese LED permanecerá encendido durante dos pasos. Puedes evitar la repetición en los extremos iniciando el ciclo de rotación con un índice menor o mayor (por ejemplo, de 4 a 1).
¿Cómo se ajusta la velocidad?▾
Cambia el valor de delay() entre cada paso. Un valor entre 30 y 80 ms proporciona un efecto fluido. Si quieres cambiar la velocidad mientras está en marcha, puedes añadir un potenciómetro, como en el siguiente proyecto: «Rayo negro con velocidad ajustable».
¿Puedo añadir más LED?▾
Sí, basta con añadir nuevos pines a la matriz de pines y actualizar los límites del bucle. La Uno tiene 12 pines digitales libres; si necesitas más, puedes controlar más de 8 LED con solo 3 pines mediante un registrador de desplazamiento 74HC595.
