diff --git a/Case/Casing.scad b/Case/Casing.scad index 1ac5e20..3415c5f 100644 --- a/Case/Casing.scad +++ b/Case/Casing.scad @@ -205,4 +205,5 @@ color("red") ring_mounting(0,0,0); //projection() difference() { // back_plate(0,0,-33); // mounting_hardware(0,0,0); +// translate([55,-30,-13]) rotate([0,180,0]) waterproof_pushbutton(0,0,0,4); //} \ No newline at end of file diff --git a/LightClock.ino b/LightClock.ino index 1a2d2ac..af3910f 100644 --- a/LightClock.ino +++ b/LightClock.ino @@ -36,7 +36,7 @@ #define TRANSITION_DELAY 300 -#define AWAKE_TIME_SECONDS 3600 +#define AWAKE_TIME_SECONDS 1800 RTC_DS1307 rtc; @@ -73,11 +73,6 @@ DateTime wakeUpTime; bool wakeUp = false; bool pirEnabled = true; -long lastDebounceTime = 0; -long debounceDelay = 50; -int pirOverrideButtonState; -int lastPirOverrideButtonState = HIGH; - void setup() { Serial.begin(115200); @@ -133,21 +128,23 @@ void setup() void loop() { - // Debounce the PIR Override button (based on http://arduino.cc/en/Tutorial/Debounce) - int currentPirOverrideButtonState = digitalRead(PIR_OVERRIDE_BUTTON_PIN); - if (currentPirOverrideButtonState != lastPirOverrideButtonState) - { - lastDebounceTime = millis(); - } - - if ((millis() - lastDebounceTime) > debounceDelay - && currentPirOverrideButtonState != lastPirOverrideButtonState) + if (digitalRead(PIR_OVERRIDE_BUTTON_PIN) == LOW) { pirEnabled = !pirEnabled; - digitalWrite(PIR_OVERRIDE_LED, pirEnabled); + + if (clockStateMachine.isInState(Sleeping)) { + wakeUp = true; + } + else + { + wakeUp = false; + clockStateMachine.transitionTo(Sleeping); + } + + delay(300); } - lastPirOverrideButtonState = currentPirOverrideButtonState; + digitalWrite(PIR_OVERRIDE_LED, pirEnabled); uint8_t buttons = lcd.readButtons(); @@ -171,6 +168,7 @@ void loop() if (clockStateMachine.isInState(Sleeping) && wakeUp) { + wakeUpTime = rtc.now(); clockStateMachine.transitionTo(ShowTime); } else if (clockStateMachine.isInState(ShowTime)) @@ -662,7 +660,6 @@ void setSleepingUpdate() { if (pirEnabled && digitalRead(PIR_PIN) == HIGH) { - wakeUpTime = rtc.now(); wakeUp = true; } }