int pinLED[] = {17, 18, 19};
int pinPIR[] = {25, 26, 27};
const int LDR_PIN = 4;
bool ldrOnBase = false;
unsigned long lastToggleTimePIR[3] = {0, 0, 0};
bool ledBlinkState[3] = {false, false, false};
#define BLINK_INTERVAL 500
void setup() {
pinMode(LDR_PIN, INPUT);
for (int i = 0; i < 3; i++) {
pinMode(pinLED[i], OUTPUT);
pinMode(pinPIR[i], INPUT);
digitalWrite(pinLED[i], LOW);
ledBlinkState[i] = LOW;
}
}
void loop() {
unsigned long currentTime = millis();
ldrOnBase = analogRead(LDR_PIN) > 500;
for (int i = 0; i < 3; i++) {
bool pirDetected = digitalRead(pinPIR[i]);
if (pirDetected) {
if (currentTime - lastToggleTimePIR[i] >= BLINK_INTERVAL) {
lastToggleTimePIR[i] = currentTime;
ledBlinkState[i] = !ledBlinkState[i];
digitalWrite(pinLED[i], ledBlinkState[i]);
}
} else {
digitalWrite(pinLED[i], ldrOnBase);
ledBlinkState[i] = ldrOnBase;
}
}
}