From afc6e719681c698dea1ba8cf131ec502a53f5064 Mon Sep 17 00:00:00 2001 From: Felix Rusu Date: Wed, 18 Nov 2020 09:54:55 -0500 Subject: [PATCH] Update MotionMote.ino --- Examples/MotionMote/MotionMote.ino | 61 +++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/Examples/MotionMote/MotionMote.ino b/Examples/MotionMote/MotionMote.ino index 0beb97a..e063333 100644 --- a/Examples/MotionMote/MotionMote.ino +++ b/Examples/MotionMote/MotionMote.ino @@ -225,7 +225,7 @@ void checkBattery() void sleep(uint32_t sleepTime) { DEBUGFlush(); if (sleepTime < 262) { //sleeps just the MCU, using WDT (radio is not touched) - LowPower.longPowerDown(sleepTime); + longPowerDown(sleepTime); } else { //sleeps MCU using the radio timer - should not be used if radio needs to be in RX mode! uint32_t freq = radio.getFrequency(); if (sleepTime%262 && sleepTime > 262*2) { @@ -254,3 +254,62 @@ void listenModeSleep(uint16_t millisInterval) { LowPower.powerDown( SLEEP_FOREVER, ADC_OFF, BOD_OFF ); radio.endListenModeSleep(); } + +void longPowerDown(uint32_t sleepTime) { + do { + if (sleepTime > 8000) + { + LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); + sleepTime-=8000; + } + else if (sleepTime > 4000) + { + LowPower.powerDown(SLEEP_4S, ADC_OFF, BOD_OFF); + sleepTime-=4000; + } + else if (sleepTime > 2000) + { + LowPower.powerDown(SLEEP_2S, ADC_OFF, BOD_OFF); + sleepTime-=2000; + } + else if (sleepTime > 1000) + { + LowPower.powerDown(SLEEP_1S, ADC_OFF, BOD_OFF); + sleepTime-=1000; + } + else if (sleepTime > 512) + { + LowPower.powerDown(SLEEP_500MS, ADC_OFF, BOD_OFF); + sleepTime-=512; + } + else if (sleepTime > 256) + { + LowPower.powerDown(SLEEP_250MS, ADC_OFF, BOD_OFF); + sleepTime-=256; + } + else if (sleepTime > 128) + { + LowPower.powerDown(SLEEP_120MS, ADC_OFF, BOD_OFF); + sleepTime-=128; + } + else if (sleepTime > 64) + { + LowPower.powerDown(SLEEP_60MS, ADC_OFF, BOD_OFF); + sleepTime-=64; + } + else if (sleepTime > 32) + { + LowPower.powerDown(SLEEP_30MS, ADC_OFF, BOD_OFF); + sleepTime-=32; + } + else if (sleepTime > 16) + { + LowPower.powerDown(SLEEP_15MS, ADC_OFF, BOD_OFF); + sleepTime-=16; + } + else + { + sleepTime=0; + } + } while(sleepTime); +} \ No newline at end of file