スリープへの移行とボタン押下による復帰

解説

スリープへの移行と、ボタン押下による復帰についてまとめます。

スリープへの移行とボタン押下による復帰のために必要な処理の手続き

① アナログ・デジタル・コンバータ機能を無効にする(少しでも電力消費を抑えるため)
② スリープモードを設定する(②⑤⑧でセット)
③ 割り込み機能を無効にする(④⑤の処理を確実に実行するため)
④ 電圧降下検出機能を無効にする(少しでも電力消費を抑えるため)
⑤ スリープ機能を有効にする(②⑤⑧でセット)
⑥ 割り込み機能を有効にする(④⑤の処理を実行したので元に戻す)
⑦ 外部割り込み条件を設定する(Wakeするための外部割り込み条件の割込設定)
⑧ スリープ実行(②⑤⑧でセット)
(⑧によってスリープに移行する。⑦で設定した外部割り込みでWakeし、⑨の処理が実施される)
⑨ スリープ機能を無効にする(⑦で設定した外部割り込みでWakeしたので、スリープを無効にする)
⑩ 外部割り込み条件の設定を解除する(Wakeしたので)
⑪ アナログ・デジタル・コンバータ機能を有効にする(Wakeしたので)

電流測定結果

テスターを用いた電流計測の結果(テスターのレンジ設定は、20[mA]設定)
・LED消灯時 : 3.57[mA]
・LED点灯時 : 11.81[mA]
・スリープ時 : 0.01[mA]

部品表

最低限必要なものは「ハードウェアのセットアップ」参照

部品名 数量 商品名 参考価格
LED 1 赤色LED 3mm OSDR3133A 100個350円
100Ω抵抗器 1 カーボン抵抗(炭素皮膜抵抗) 1/6W 100Ω 100本100円
タクトスイッチ 1 タクトスイッチ 1個10円

接続例

割り込みピンとして、digital pin 2 (4番ピン) を使用し、
出力ピンとして、digital pin 13 (19番ピン) を使用した場合の接続例

※電源に関する接続は省略(ブレッドボードの一番下の行に外部電源のVCCを、下から2行目に外部電源のGNDを接続する)

サンプルコード

実行

1.1秒点灯
2.10秒消灯
3.10秒点灯
4.スリープへ移行
5.ボタン押下によりスリープから復帰し1.へ。以降1.~5.をループ。

ダウンロード

サンプルスケッチファイル

参考

Sleep. How to let your Arduino go to sleep and wake up on an external event.
AVR microcontroller sleep demonstrations
Power Management and Sleep Modes