Алгоритм следующий, есть концевик двери - геркон, и датчик движения PIR.
Сюжет во включении света по открытию двери, если забыли закрыть выключить по таймеру.
Если дверь открыта и сработал датчик движения, не выключать пока дверь снова не откроют.
Если дверь открыть, то сработка датчика движения включает свет по его задержке, режим HI, который выставляется переменными резисторами на самом датчике.
Всё, чего вчера смог добиться, это включение и не выключение при закрытой двери с сработке датчика, открытие выключает свет.
Весь затык в отключении при следующем открытии, пробовал через Bool, но ему назначается состояние сейчас, он не помнит как триггер.
Пробовал триггер, но не получается "поймать" именно следующее открытие, а не изменение геркона.
Код: Выделить всё
bool _gtv1 = 1;
bool _trgr2 = 0;
void setup()
{
pinMode(3, INPUT);
pinMode(5, INPUT);
pinMode(13, OUTPUT);
}
void loop()
{
_gtv1 = ( ( (digitalRead (3))) && ( (digitalRead (5))) );
if(!( (digitalRead (3)))) _trgr2 = 0;
if(_gtv1) _trgr2 = 1;
digitalWrite(13, _trgr2);
}