ボタン押下によるスリープへの移行と、ボタン押下による復帰
解説
ボタン押下によるスリープへの移行と、ボタン押下による復帰についてまとめます。
「スリープへの移行とボタン押下による復帰」をベースに、ボタン押下によるスリープへの移行の処理を追加します。
スリープへの移行とボタン押下による復帰のために必要な処理の手続き
・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.をループ。