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

解説

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

スリープへの移行とボタン押下による復帰」をベースに、ボタン押下によるスリープへの移行の処理を追加します。

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

・setup関数内で、スリープに移行する割り込みの設定を行う。
・コンパイラの意図しない最適化を抑制するために、スリープ移行フラグ変数をvolatile変数として宣言する。
・スリープに移行する割り込み関数内では、スリープに移行する割り込みの設定を解除する。
・スリープに移行する割り込み関数内では、スリープ移行フラグを立てる。
・loop関数内で、スリープ移行フラグが立っている場合には、スリープへ移行処理を実施する。
・スリープから復帰した際には、ボタン押下誤動作対策の待ち時間を設ける。
・スリープから復帰した際には、スリープに移行する割り込みの設定を行う。

部品表

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

部品名 数量 商品名 参考価格
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.ボタン押下によりスリープへ移行
3.ボタン押下によりスリープから復帰
4.移行 1.~3.をループ。

ダウンロード

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