上次的sleep mode,醒著就一定要到睡著,才能再次叫醒。可是,我們希望當我們有動作時,就不需要進入睡眠模式。也就醒著時,也要時時提醒不要再睡著。
這在上次的程式中,拿掉一行就行!
來吧,直接看上次的程式。我只拿sleepNow()這段~
void sleepNow(){
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
attachInterrupt(0, wakeUpNow, LOW);
digitalWrite(ledPin, LOW);
sleep_mode(); // 進入睡眠
sleep_disable(); // 離開睡眠時,關掉。
// detachInterrupt(0);
// 關閉中斷0 pin 2 ,如此在一般執行時,才不會被執行
//(原始code寫pin 3,應該是pin 2才是)
delay(250);
digitalWrite (interruptPin, LOW)
}
拿掉的是第11行,原本 detachInterrup()用來讓在工作模式狀態,不被再次觸發喚醒中斷。
如果以我們的需求,是要用來看不動作時間有多久後要進入睡眠模式。那我們就需要靠中斷,有動作時就去更新間計數。讓系統持序續在工作狀態。