Здравствуйте.Написал программу для лампы 220V которая включается за счёт движения(PIR датчик) и фоторезистора(проверяет освещенность помещения,если темно,то вкл,если светло,то выкл). Проблема в том,что если во время того как лампа горит и есть движение,если значение на фоторезисторе станет>300(светло),то лампа будет гореть пока не станет темно. Не могли бы вы подсказать,что нужно исправить в скетче,чтобы если во время того как горит лампа и значение на фоторезисторе изменилось на "светло" лампа переставала гореть
Судя по коду, реле отключается по digitalWrite(relayPin, HIGH)? Тогда вот так. Код (C++): int sensor = A0; //фоторезистор unsigned int value = 0; long unsigned int lowIn; int calibrationTime = 30; long unsigned int pause = 700; //Пауза, после которой движение считается оконченным boolean lockLow = true; boolean takeLowTime; int pirPin = 2; //вывод подключения PIR датчика int ledPin = 13; //вывод сигнального диода int relayPin = 4; //реле пин void setup() { pinMode(pirPin, INPUT); pinMode(ledPin, OUTPUT); pinMode(relayPin, OUTPUT); digitalWrite(relayPin, HIGH); delay(4000); digitalWrite(pirPin, LOW); for (int i = 0; i < calibrationTime; i++) //время колибровки { i % 2 ? digitalWrite(ledPin, HIGH) : digitalWrite(ledPin, LOW); delay(1000); } //По окончанию калибровки зажжем сигнальный диод digitalWrite(ledPin, HIGH); delay(50); } void loop() { value = analogRead(sensor); if (value < 300) { if (digitalRead(pirPin) == HIGH) { if (lockLow) { lockLow = false; digitalWrite(relayPin, LOW); delay(50); } takeLowTime = true; } //Ели движения нет if (digitalRead(pirPin) == LOW) { if (takeLowTime) { lowIn = millis(); takeLowTime = false; } if (!lockLow && millis() - lowIn > pause) { lockLow = true; digitalWrite(relayPin, HIGH); delay(50); } } } else { digitalWrite(relayPin, HIGH); delay(2); } }