code directionality posted in code tags
/***********************************************************************************
* Staircase 7 PIR w D1 & D2 Sketch
* to test PCB Staircase 220308 Beta
* Based on Staircase_Blink_7_w_D1_D2_220810
* with parts based on
* Staircase_7_Channel_w_heartbeat_and_D1_D2_220428
* and
* Staircase_7_Channel_w_heartbeat_and_D1_D2_220528_desc
* Revised and name updated to ....220815: changed variable
* names and put D1 blinker in Ascending section amd
* D2 blinker in Descending section
************************************************************************************/
// ++++ LED pin numbers ledPinX Output 2-10 ++++
int LED1 = 2;
int LED2 = 3;
int LED3 = 4;
int LED4 = 5;
int LED5 = 6;
int LED6 = 7;
int LED7 = 8;
int LEDD1 = 9; // red D1
int LEDD2 = 10; // green D2
// ++++ Input pin numbers for PIR inputPinXX A5-A0, 11, 12 13 ++++
int PIR1 = A5; // choose the input pin (for PIR sensor)
int PIR2 = A4;
int PIR3 = A3;
int PIR4 = A2;
int PIR5 = A1;
int PIR6 = A0;
int PIR7 = 11; // 220504 acp
int PIR8 = 12;
// int inputPin13 = 13;
// ++++ PIR State pirStateXX = LOW ++++
int pirState1 = LOW; // start, assuming no motion detected
int pirState2 = LOW;
int pirState3 = LOW;
int pirState4 = LOW;
int pirState5 = LOW;
int pirState6 = LOW;
int pirState7 = LOW; // 220504 acp
int pirState8 = LOW;
// ++++ Input status variable valXX A5 - 12, 13
int val1 = 0; // variable for reading the pin status
int val2 = 0;
int val3 = 0;
int val4 = 0;
int val5 = 0;
int val6 = 0;
int val7 = 0; // 220504 acp
int val8 = 0;
// the setup function runs once when you press reset or power the board
void setup() {
// +++++ declare ledPinXX numbers as OUTPUT ++++
pinMode(LED1, OUTPUT); // declare LED4 as output
pinMode(LED2, OUTPUT); // declare LED5 as output
pinMode(LED3, OUTPUT); // declare LED6 as output
pinMode(LED4, OUTPUT); // declare LED4 as output
pinMode(LED5, OUTPUT); // declare LED5 as output
pinMode(LED6, OUTPUT); // declare LED6 as output
pinMode(LED7, OUTPUT); // declare LED7 as output
pinMode(LEDD1, OUTPUT); // declare LED9 as output
pinMode(LEDD2, OUTPUT); // declare LED10 as output
// ++++ declare PIRXX numbers as INPUT ++++
pinMode(PIR1, INPUT); // declare sensorA5 as input
pinMode(PIR2, INPUT); // declare sensorA4 as input
pinMode(PIR3, INPUT); // declare sensorA3 as input
pinMode(PIR4, INPUT); // declare sensorA2 as input
pinMode(PIR5, INPUT); // declare sensorA1 as input
pinMode(PIR6, INPUT); // declare sensorA0 as input
pinMode(PIR7, INPUT); // declare sensor11 as input 220504 acp
pinMode(PIR8, INPUT); // declare sensor12 as input
}
// the loop function runs continuously
void loop(){
// if statement to determine if walker comeing from top or bottom of staircase
val1 = digitalRead(PIR1); // read input value from PIR at bottom
if (val1 == HIGH) {
//Connect PIR1 to '+LED1-'
val1 = digitalRead(PIR1); // read input value
if (val1 == HIGH) { // check if the input is HIGH
val1 = digitalRead(PIR1); // read input value
digitalWrite(LED1, HIGH); // turn LED ON
} else {
digitalWrite(LED1, LOW); // turn LED OFF
if (pirState1 == HIGH){
pirState1 = LOW;
}
}
//Connect PIR2 to '+LED2-'
val2 = digitalRead(PIR2); // read input value
if (val2 == HIGH) { // check if the input is HIGH
digitalWrite(LED2, HIGH); // turn LED ON
} else {
digitalWrite(LED2, LOW); // turn LED OFF
if (pirState2 == HIGH){
pirState2 = LOW;
}
}
//Connect PIR3 to '+LED3-'
val3 = digitalRead(PIR3); // read input value
if (val3 == HIGH) { // check if the input is HIGH
digitalWrite(LED3, HIGH); // turn LED ON
} else {
digitalWrite(LED3, LOW); // turn LED OFF
if (pirState3 == HIGH){
pirState3 = LOW;
}
}
//Connect PIR4 to '+LED4-'
val4 = digitalRead(PIR4); // read input value
if (val4 == HIGH) { // check if the input is HIGH
digitalWrite(LED4, HIGH); // turn LED ON
} else {
digitalWrite(LED4, LOW); // turn LED OFF
if (pirState4 == HIGH){
pirState4 = LOW;
}
}
//Connect PIR5 to '+LED5-'
val5 = digitalRead(PIR5); // read input value
if (val5 == HIGH) { // check if the input is HIGH
digitalWrite(LED5, HIGH); // turn LED ON
} else {
digitalWrite(LED5, LOW); // turn LED OFF
if (pirState5 == HIGH){
pirState5 = LOW;
}
}
//Connect PIR6 to '+LED6-'
val6 = digitalRead(PIR6); // read input value
if (val6 == HIGH) { // check if the input is HIGH
digitalWrite(LED6, HIGH); // turn LED ON
} else {
digitalWrite(LED6, LOW); // turn LED OFF
if (pirState6 == HIGH){
pirState6 = LOW;
}
}
//Connect PIR7 to '+LED7-'
val7 = digitalRead(PIR7); // read input value
if (val7 == HIGH) { // check if the input is HIGH
digitalWrite(LED7, HIGH); // turn LED ON
} else {
digitalWrite(LED7, LOW); // turn LED OFF
if (pirState7 == HIGH){
pirState7 = LOW;
}
}
{
}
}
else {
// This is the Descending use case
//Connect PIR2 to '+LED1-'
val2 = digitalRead(PIR2); // read input value
if (val2 == HIGH) { // check if the input is HIGH
digitalWrite(LED1, HIGH); // turn LED ON
} else {
digitalWrite(LED1, LOW); // turn LED OFF
if (pirState2 == HIGH){
pirState2 = LOW;
}
}
//Connect PIR3 to '+LED2-'
val3 = digitalRead(PIR3); // read input value
if (val3 == HIGH) { // check if the input is HIGH
digitalWrite(LED2, HIGH); // turn LED ON
} else {
digitalWrite(LED2, LOW); // turn LED OFF
if (pirState3 == HIGH){
pirState3 = LOW;
}
}
//Connect PIR4 to '+LED3-'
val4 = digitalRead(PIR4); // read input value
if (val4 == HIGH) { // check if the input is HIGH
digitalWrite(LED3, HIGH); // turn LED ON
} else {
digitalWrite(LED3, LOW); // turn LED OFF
if (pirState4 == HIGH){
pirState4 = LOW;
}
}
//Connect PIR5 to '+LED4-'
val5 = digitalRead(PIR5); // read input value
if (val5 == HIGH) { // check if the input is HIGH
digitalWrite(LED4, HIGH); // turn LED ON
} else {
digitalWrite(LED4, LOW); // turn LED OFF
if (pirState5 == HIGH){
pirState5 = LOW;
}
}
//Connect PIR6 to '+LED5-'
val6 = digitalRead(PIR6); // read input value
if (val6 == HIGH) { // check if the input is HIGH
digitalWrite(LED5, HIGH); // turn LED ON
} else {
digitalWrite(LED5, LOW); // turn LED OFF
if (pirState6 == HIGH){
pirState6 = LOW;
}
}
//Connect PIR7 to '+LED6-'
val7 = digitalRead(PIR7); // read input value
if (val7 == HIGH) { // check if the input is HIGH
digitalWrite(LED6, HIGH); // turn LED ON
} else {
digitalWrite(LED6, LOW); // turn LED OFF
if (pirState7 == HIGH){
pirState7 = LOW;
}
}
//Connect PIR8 to '+LED7-'
val8 = digitalRead(PIR8); // read input value
if (val8 == HIGH) { // check if the input is HIGH
digitalWrite(LED7, HIGH); // turn LED ON
} else {
digitalWrite(LED7, LOW); // turn LED OFF
if (pirState8 == HIGH){
pirState8 = LOW;
}
}
}
// the pin for LED marked 'D1' red on PCB
digitalWrite(LEDD1, HIGH);
delay(500);
digitalWrite(LEDD1, LOW);
delay(500);
// the pin for LED marked 'D2' green on PCB
digitalWrite(LEDD2, HIGH);
delay(500);
digitalWrite(LED2, LOW);
delay(500);
}
I'd put a sensor at the top and the bottom of the staircase to detect staircase use. If the Top of stair case light comes on then illuminate the top of stair case light until bottom of stair case light comes on. Then all light off till next event.
BTW, you did read about how to use code tags. Why not use them?
Better yet use something like ESP32's with WiFi and have the ESP32 at the top of the stairs, via WiFI, tell the ESP32 at the bottom of the stairs someone is coming turn on the lights spin up the band and do a little dance.