Staircase led strip lighting with PIR and LDR

First of all i have arduino mega 2560, 2 PIR sensors, 1 LDR sensor, Powersupply and led strip light cut into 1mtr approx each around 18 of them. led strip power on 12v2amp and i have relays equal no to led strip pieces.

I need to program for my staircase which turns on just when someone comes next to PIR sensor.The step should light up before person steps the next step and so on frm down to up OR frm up to down. It must also go off in similar manner...
My problem is when sensor is detected frm one side and then frm other side before completion of loop and also if another person climbs after another person climbs frm same direction....

Iam new in coding....
My program is like this:


void setup()
{
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(1, OUTPUT);

Serial.begin(9600);
}

void loop()
{
int ldr = analogRead(A0);
Serial.println(ldr);
if(ldr<450)
{

delay(1000);
int val1= analogRead(A3);
Serial.println("PIR 1");
Serial.println(val1);
int val2= analogRead(A2);
Serial.println("PIR 2");
Serial.println(val2);

if(val1>500 && val2<500)
{
Serial.println("FIRST LIGHTS UP");
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(11, HIGH);
delay(1000);
digitalWrite(10, HIGH);
delay(1000);
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(5, HIGH);
delay(1000);
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(1, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(12, LOW);
delay(1000);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(10, LOW);
delay(1000);
digitalWrite(9, LOW);
delay(1000);
digitalWrite(8, LOW);
delay(1000);
digitalWrite(7, LOW);
delay(1000);
digitalWrite(6, LOW);
delay(1000);
digitalWrite(5, LOW);
delay(1000);
digitalWrite(4, LOW);
delay(1000);
digitalWrite(3, LOW);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
digitalWrite(1, LOW);
delay(4000);

}
if(val2>500 && val1<500)
{
Serial.println("second lights up");
digitalWrite(1, HIGH);
delay(1000);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(5, HIGH);
delay(1000);
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(10, HIGH);
delay(1000);
digitalWrite(11, HIGH);
delay(1000);
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(1, LOW);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
digitalWrite(3, LOW);
delay(1000);
digitalWrite(4, LOW);
delay(1000);
digitalWrite(5, LOW);
delay(1000);
digitalWrite(6, LOW);
delay(1000);
digitalWrite(7, LOW);
delay(1000);
digitalWrite(8, LOW);
delay(1000);
digitalWrite(9, LOW);
delay(1000);
digitalWrite(10, LOW);
delay(1000);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(12, LOW);
delay(1000);
digitalWrite(13, LOW);
delay(4000);

}
if(val1>500 && val2>500)
{
Serial.println("BOTH LIGHT UP");
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
delay(10000);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
}
delay(2000);
Serial.println("LIGHT NOT REQUIRED");
}

Please help me in this. Hope for positive reply

sketch_jan08a.ino (3.84 KB)

I would say first thing is to learn to use CODE TAGS and edit your post ( </> )

You could reduce the code size considerably too by using FOR loops.

actually,

I wanted code where all possible condtions can be met...
As both pir sensor UP & Down once wont be enabled at the same time... therewill be a time delay... what happens in that case .

Plz help.

And yes, thanks for quick reply. :slight_smile:

As I first said learn to use CODE TAGS ( </> ) as having to scroll down so far just to get past your first post is a pain

As i told you iam new can you just give me a example of few lines basic code with CODE TAGS

abhishek_goa:
As i told you iam new can you just give me a example of few lines basic code with CODE TAGS

At the top of each section of the forum is a post with the title "How to use this forum - please read." Read it!