int const Pot = A5; //Потенцинометр 10к: int const Light = A7; //Датчик света: int const Relay1 = 4; int const Relay2 = 5; int const Relay3 = 6; int const Relay4 = 7; int const Move = 3; // Цифровой датчик движения: int const pause = 50000; // время работы 5 сек. long unsigned int lowIn; boolean lockLow = true; boolean takeLowTime; void setup() { // Определяем входы и выходы: pinMode(Move, INPUT); pinMode(Relay1, OUTPUT); pinMode(Relay2, OUTPUT); pinMode(Relay3, OUTPUT); pinMode(Relay4, OUTPUT); // определяем состояние: digitalWrite(Relay1, HIGH); digitalWrite(Relay2, HIGH); digitalWrite(Relay3, HIGH); digitalWrite(Relay4, HIGH); } void loop() { int moveVal = digitalRead(Move); int lightVal = analogRead(Light); int potVal = analogRead(Pot); int lightLimit = map(potVal, 0, 1023, 500, 1000); if (moveVal == HIGH && lightVal < lightLimit) { if (lockLow) { lockLow = false; digitalWrite(Relay1, LOW); delay(10); digitalWrite(Relay2, LOW); delay(10); digitalWrite(Relay3, LOW); delay(10); digitalWrite(Relay4, LOW); delay(10); } takeLowTime = true; } else { if (takeLowTime) { lowIn = millis(); takeLowTime = false; } if (!lockLow && millis() - lowIn > pause) { lockLow = true; digitalWrite(Relay1, HIGH); delay (10); digitalWrite(Relay2, HIGH); delay (10); digitalWrite(Relay3, HIGH); delay (10); digitalWrite(Relay4, HIGH); } } }