スリープへの移行とボタン押下による復帰
解説
スリープへの移行と、ボタン押下による復帰についてまとめます。
スリープへの移行とボタン押下による復帰のために必要な処理の手続き
① アナログ・デジタル・コンバータ機能を無効にする(少しでも電力消費を抑えるため)
② スリープモードを設定する(②⑤⑧でセット)
③ 割り込み機能を無効にする(④⑤の処理を確実に実行するため)
④ 電圧降下検出機能を無効にする(少しでも電力消費を抑えるため)
⑤ スリープ機能を有効にする(②⑤⑧でセット)
⑥ 割り込み機能を有効にする(④⑤の処理を実行したので元に戻す)
⑦ 外部割り込み条件を設定する(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