Hi!
I want a pushbutton to put my 328P to sleep and also to wake it up.
If the button is used for sleep, it won't wake up with that same button. However if I put it to sleep in main loop, the button works for wake up.
Power consumption active/sleep: 9mA / 0,330mA
Wake up does not work:
#include <Bounce2.h>
#include <avr/sleep.h>
Bounce debouncerPower = Bounce();
void setup() {
pinMode(2, INPUT_PULLUP);
debouncerPower.attach(2, INPUT_PULLUP);
debouncerPower.interval(20);
}
void loop() {
debouncerPower.update();
if (debouncerPower.read() == LOW) {
sleepNow();
}
}
void wakeUpNow()
{
}
void sleepNow() {
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
attachInterrupt(0, wakeUpNow, LOW);
sleep_mode();
sleep_disable();
detachInterrupt(0);
}
Wake up works:
#include <avr/sleep.h>
void setup() {
pinMode(2, INPUT_PULLUP);
}
void loop() {
delay(3000);
sleepNow();
}
void wakeUpNow()
{
}
void sleepNow() {
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
attachInterrupt(0, wakeUpNow, LOW);
sleep_mode();
sleep_disable();
detachInterrupt(0);
}
Hoping that someone can point me in the right direction
EDIT: Ok, I had too much blood in my caffeinestream, added a timer that doesn't allow it to sleep within 1000ms of wake up and it finally work as expected.
If you have another solution, feel free to contribute!