[PRIMER PROYECTO] Apagar LED's con sensor de movimiento

Mi objetivo es construir un aparato con 6 sensores de movimiento+LED. El programa encendería un LED y tendrías que acerca tu mano al sensor de movimiento para apagarlo, encendiendo a su vez otro de forma aleatoria.

Por el momento, he simplificado a un sensor de movimiento y 4 LED, para aprender a cómo programar.

Pego el código en el que ando trabajando, seguro se puede mejorar. Consigo el propósito, pero tengo dos problemas:

  • el paso de apagar el LED, a encender el siguiente tarda como 3 segundos, aunque mediante un ‘Serial.println’, pude comprobar que se generaban 4 o 5 números antes de encenderse el siguiente LED. Hay alguna solución para que el siguiente LED, se encienda más rápido?¿
  • los LED, se encienden más de dos veces, he utilizado mal el for?
int PIR = 6;
int ESTADO = 0;
long randomNumber;

void setup(){
  pinMode(PIR, INPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  delay(20);
}

void loop(){
  for (int i = 0; i <3; i++){
    if (digitalRead(2) == LOW & digitalRead(3) == LOW & digitalRead(4) == LOW & digitalRead(5) == LOW) {
      randomNumber = random(2,6);
      delay(1000);
      digitalWrite(randomNumber, HIGH);
    }
    ESTADO = digitalRead(PIR);
    if (ESTADO == HIGH){
      digitalWrite(randomNumber, LOW);
    }
  }
}

Muchas gracias a cualquiera que me pueda echar un cable!

Añado un video de lo que trato de imitar, que se ve más fácil que con mi explicación. Obviamente, con las diferencias, ya que como conté, soy novato y trato de ir aprendiendo poco a poco.

Aparte de las dos dudas del post anterior, para este propósito es mejor el PIR o un LDR, ya me podría servir?

Hola, me parece que el bucle 'for' no cumple funcion alguna, prueba sacarlo. Saludos.