// *******************************
// PIR triggered stairway lighting
// *******************************
// PIR sensor has three settings:
// delay (sensor activated), inhibit (no sensing until), retrigger (trigger during trigger)
int sensorPin1 = A0; //Bottom - Up sensor
int sensorPin2 = A1; //Top - Down sensor
int sensorStatus1;
int sensorStatus2;
const int ledPin[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // 12 LED pins
void setup() {
for (int i = 0; i < 12; i++) {
pinMode(ledPin[i], OUTPUT); // set LED pins as OUTPUT
}
pinMode(sensorPin1, INPUT_PULLUP); // set PIR pins as INPUT_PULLUP to stop "bounce"
pinMode(sensorPin2, INPUT_PULLUP);
}
void loop() {
sensorStatus1 = digitalRead(sensorPin1); //Stairs TOP sensor - Motion climbing
if (sensorStatus1 == HIGH) {
for (int i = 12; i > -1; i--) // turn lights on
{
digitalWrite(ledPin[i], HIGH);
delay(100);
}
delay(2000);// delay time to climb the stairs
for (int i = 12; i > -1; i--)
{
digitalWrite(ledPin[i], LOW);
delay(100);
}
// delay(5000); // PIR stays HIGH for 5 seconds default. Adjusted JSON to 2
}
sensorStatus2 = digitalRead(sensorPin2); //Stairs BOTTOM sensor - Motion descending
if (sensorStatus2 == HIGH) {
// turn the LEDs on
for (int i = 0; i < 12; i++) {
digitalWrite(ledPin[i], HIGH);
delay(100);
}
delay(2000);// delay time to climb the stairs
for (int i = 0; i < 12; i++) {
digitalWrite(ledPin[i], LOW);
delay(100);
}
// delay(5000); // PIR stays HIGH for 5 seconds default. Adjusted JSON to 2
}
}
void lightingChase(int nearEnd, int farEnd) {
int direction = nearEnd > farEnd ? 1: -1;
int i = nearEnd;
if (i != farEnd) {
digitalWrite(ledPin[i], HIGH);
i += direction;
}
}