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!