// 9 задание
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
bool timerActive = false;
unsigned long timerStartTime = 0;
bool manualOverride = false;
bool wasLight = false;
void loop() {
int lightLevel = analogRead(A0);
int buttonState = digitalRead(2);
if (buttonState == LOW) {
timerActive = false;
manualOverride = true;
wasLight = false;
digitalWrite(13, LOW);
delay(500);
return;
}
bool isLightNow = (lightLevel >= 300);
if (isLightNow && !wasLight && !timerActive && !manualOverride) {
timerActive = true;
timerStartTime = millis();
digitalWrite(13, HIGH);
}
wasLight = isLightNow;
if (timerActive) {
unsigned long elapsedTime = millis() - timerStartTime;
if (lightLevel < 300) {
timerActive = false;
digitalWrite(13, LOW);
}
else if (elapsedTime >= 3000) {
timerActive = false;
digitalWrite(13, LOW);
manualOverride = true;
}
}
if (manualOverride && lightLevel < 300) {
manualOverride = false;
}
delay(100);
}