// Automatic Stairs Light with 2 IR Sensors, 8 Relays & Potentiometer
// By Umair's Project
#define sensor1 2 // پہلا IR سینسر (نیچے کی طرف)
#define sensor2 3 // دوسرا IR سینسر (اوپر کی طرف)
int relays[8] = {4, 5, 6, 7, 8, 9, 10, 11}; // ریلے ماڈیول کے لیے 8 چینلز
#define potPin A5 // پوٹینشیو میٹر کا پن
void setup() {
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
for (int i = 0; i < 8; i++) {
pinMode(relays[i], OUTPUT);
digitalWrite(relays[i], HIGH); // شروع میں سب ریلے آف
}
}
void loop() {
int potValue = analogRead(potPin);
int delayTime = map(potValue, 0, 1023, 50, 1000);
// اگر نیچے والا سینسر ایکٹیویٹ ہو
if (digitalRead(sensor1) == LOW) {
turnOnForward(delayTime); // 1 سے 8 تک آن ہوگا
// اب تب تک ویٹ کرے گا جب تک sensor2 ایکٹیویٹ نہ ہو
while (digitalRead(sensor2) == HIGH);
turnOffForward(delayTime); // sensor2 ایکٹیویٹ ہونے پر آف ہونا شروع ہوگا
}
// اگر اوپر والا سینسر ایکٹیویٹ ہو
if (digitalRead(sensor2) == LOW) {
turnOnBackward(delayTime); // 8 سے 1 تک آن ہوگا
// اب تب تک ویٹ کرے گا جب تک sensor1 ایکٹیویٹ نہ ہو
while (digitalRead(sensor1) == HIGH);
turnOffBackward(delayTime); // sensor1 ایکٹیویٹ ہونے پر آف ہونا شروع ہوگا
}
}
// 🔹 ریلے آن 1 سے 8
void turnOnForward(int d) {
for (int i = 0; i < 8; i++) {
digitalWrite(relays[i], LOW);
delay(d);
}
}
// 🔹 ریلے آف 1 سے 8
void turnOffForward(int d) {
for (int i = 0; i < 8; i++) {
digitalWrite(relays[i], HIGH);
delay(d);
}
}
// 🔹 ریلے آن 8 سے 1
void turnOnBackward(int d) {
for (int i = 7; i >= 0; i--) {
digitalWrite(relays[i], LOW);
delay(d);
}
}
// 🔹 ریلے آف 8 سے 1
void turnOffBackward(int d) {
for (int i = 7; i >= 0; i--) {
digitalWrite(relays[i], HIGH);
delay(d);
}
}