This is what I accomplished till now....
As you can see the system seams working pretty well only when I fast move may hands in front of the sensors, BUT ....when I leave my hands for longer period in front of the sensors the LEDs switch on suddenly again ( see at the end of the video).
How can I correct this bug in the code or anyway to inactivate the sensors for a short time before being active again once activated ??
#define led_1 13 //
#define led_2 12 //
#define led_3 11 // PINS for LEDS
#define led_4 10 //
#define led_5 9 //
#define led_6 8 //
#define led_7 7 //
#define PIR_UPPER2 2 // pin 2 for UPPER sensor
#define PIR_DOWN4 4 // pin 3 for DOWN sensor
int PIR_U = 0;
int PIR_D = 0;
int bUPPER = false;
int bDOWN = false;
int time = 200;
int timeA= 200;
void LIGHTA()
{
digitalWrite(led_1, HIGH); // light LEDS
delay (time);
digitalWrite(led_2, HIGH); //
delay (time);
digitalWrite(led_3, HIGH);
delay (time);
digitalWrite(led_4, HIGH);
delay (time);
digitalWrite(led_5, HIGH);
delay (time);
digitalWrite(led_6, HIGH);
delay (time);
digitalWrite(led_7, HIGH);
delay (time);
}
void LIGHTB()
{
digitalWrite(led_7, HIGH); // accensione LED 1
delay (timeA);
digitalWrite(led_6, HIGH); // accensione LED 2
delay (timeA);
digitalWrite(led_5, HIGH);
delay (timeA);
digitalWrite(led_4, HIGH);
delay (timeA);
digitalWrite(led_3, HIGH);
delay (timeA);
digitalWrite(led_2, HIGH);
delay (timeA);
digitalWrite(led_1, HIGH);
delay (timeA);
}
void OFFA ()
{
digitalWrite(led_1, LOW); // spegni LEDs sequenza 1 a 7
delay (time);
digitalWrite(led_2, LOW);
delay (time);
digitalWrite(led_3, LOW);
delay (time);
digitalWrite(led_4, LOW);
delay (time);
digitalWrite(led_5, LOW);
delay (time);
digitalWrite(led_6, LOW);
delay (time);
digitalWrite(led_7, LOW);
delay (time);
}
void OFFB ()
{
digitalWrite(led_7, LOW); // spegni LEDs sequenza 7 a 1
delay (timeA);
digitalWrite(led_6, LOW);
delay (timeA);
digitalWrite(led_5, LOW);
delay (timeA);
digitalWrite(led_4, LOW);
delay (timeA);
digitalWrite(led_3, LOW);
delay (timeA);
digitalWrite(led_2, LOW);
delay (timeA);
digitalWrite(led_1, LOW);
delay (timeA);
}
void setup() {
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(led_4, OUTPUT);
pinMode(led_5, OUTPUT);
pinMode(led_6, OUTPUT);
pinMode(led_7, OUTPUT);
pinMode(PIR_UPPER2, INPUT);
pinMode(PIR_DOWN4, INPUT);
Serial.begin(9600);
Serial.println("start");
}
void loop()
{
PIR_U = digitalRead(PIR_UPPER2);
PIR_D = digitalRead(PIR_DOWN4);
delay (500);
if (PIR_U== HIGH) // UPPER sensor activated
{
if (bDOWN==false)
{
bUPPER=true ;
LIGHTA ();
}
else // (bDOWN==true)
{
bDOWN=false;
OFFB ();
}
}
delay(500);
if (PIR_D == HIGH) // DOWN sensor activated
{
if (bUPPER==false)
{
bDOWN=true;
LIGHTB();
}
else // (bUPPER==false)
{
bUPPER=false;
OFFA ();
}
}
Serial.print("PIRA=");
Serial.print(PIR_U);
Serial.print(" PIRB=");
Serial.print(PIR_D);
Serial.print(" bUPPER=");
Serial.print(bUPPER);
Serial.print(" bDOWN=");
Serial.print(bDOWN);
Serial.println("");
delay (500);
}