Ви не увійшли.
Сторінки 1
Тема закрыта. Спасибо Госпади за помощь. Код был переписан благодаря NoName, за что ему особая благодарность.
Спасибо. Не уверен в результате, но буду разбираться.
Поменял if (PirOff - PirOn > 10000) на if (PirOn - PirOff > 10000). Теперь в переменную Pir10Sec записываются правильные значения, но сработка PIR-датчика происходит как попало. На короткое движение может среагировать как на длительное.
Вот лог serial:
PirOn: 158519
PirOff: 150694
Motion LONG ON!: 10:28
Pir10Sec: 1
Motion OFF: 10:28
DigitpirState: 0
PirOff: 161361
Pir10Sec: 0
Motion ON!: 10:28
DigitpirState: 1
PirOn: 163071
Motion OFF: 10:28
DigitpirState: 0
PirOff: 165968
Pir10Sec: 0
Нужно чтобы при 10-секундной сработке PIR-датчика в переменную Pir10Sec заносилась 1, а при отключении датчика -0.
Написал такой код:
void pirmonitoring() {
val = digitalRead(inputPin);
if (val == HIGH) {
digitalWrite(ledPin, HIGH);
if (pirState == LOW) { // пир-датчик включен
pirState = HIGH;
PirOn = millis();
DigitpirState = 1;
Serial.print("Motion ON!: ");
Serial.print(h); Serial.print(":"); Serial.println(m);
Serial.print("DigitpirState: ");
Serial.println(DigitpirState);
Serial.println();
}
}
else {
digitalWrite(ledPin, LOW);
if (pirState == HIGH) { // пир-датчик отключен
pirState = LOW;
PirOff = millis();
Pir10Sec = 0;
DigitpirState = 0;
Serial.print("Motion OFF: ");
Serial.print(h); Serial.print(":"); Serial.println(m);
Serial.print("DigitpirState: ");
Serial.println(DigitpirState);
Serial.print("Pir10Sec: ");
Serial.println(Pir10Sec);
Serial.println();
}
}
if (PirOff - PirOn > 10000) { // длительная сработка пир-датчика
Pir10Sec = 1;
Serial.print("Motion LONG ON!: ");
Serial.print(h); Serial.print(":"); Serial.println(m);
Serial.print("Pir10Sec: ");
Serial.println(Pir10Sec);
Serial.println();
}
}
Но он не работает так как надо. А именно - при коротком срабатывании и отключении датчика переменная DigitpirState записывается правильно (0 или 1), а вот при длительной сработке датчика в переменную Pir10Sec записывается 1, но при отключении так и остается 1 пока не произойдет короткая сработка.
Прошу помощи спецов. Заранее спасибо.
Сторінки 1