From 0de561fd0d8a69e5f3e497b52da76ab3df539656 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sun, 24 Jan 2016 22:14:35 +0100 Subject: [PATCH] implement PIR timeout --- Desk_LED_dimmer/Desk_LED_dimmer.ino | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Desk_LED_dimmer/Desk_LED_dimmer.ino b/Desk_LED_dimmer/Desk_LED_dimmer.ino index c316909..3fd4807 100644 --- a/Desk_LED_dimmer/Desk_LED_dimmer.ino +++ b/Desk_LED_dimmer/Desk_LED_dimmer.ino @@ -10,6 +10,7 @@ const int ldr_pin = A3; // LDR +5 -- A3 -[10K]- GND const int pir_pin = A2; #define TOUCHPAD 1 // set this to 0 if debugging without touchpad +#define PIR_TIMEOUT 10 // s #if TOUCHPAD #include @@ -108,6 +109,8 @@ static int ldr_sum = 0; static int ldr_count = 0; int last_pir = 0; +long int pir_millis = millis(); + void loop() { #if TOUCHPAD @@ -227,4 +230,23 @@ void loop() { Serial.println(pir); } + long int ms = millis(); + if ( pir == 0 ) { + if (pir_millis > 0 && ms - pir_millis > PIR_TIMEOUT * 1000 ) { + Serial.println("PIR timeout, fade-out"); + pir_millis = -1; // mark that we are in timeout + for(int i=0; i<=2; i++) { + analogWrite(mosfet_pins[i], 0); + } + } + } else { + if (pir_millis < 0) { + Serial.println("PIR fade-in after timeout"); + for(int i=0; i<=2; i++) { + analogWrite(mosfet_pins[i], mosfet_pwm[i]); + } + } + pir_millis = ms; + } + } -- 2.20.1