薬飲み忘れ防止装置を作ってみる
こんにちは、平山です。今日は、おうちの中の困りごとをmicro:bitのプログラミングで解決してみるプロジェクトをご紹介します。
私は1日3回朝昼晩に飲む薬がありますが、よく飲み忘れてしまいます。最近では飲み忘れどころか、飲んだかどうかすら思い出せない... なんて日も。そんなことありますよね。ありますよね?
ということで「薬を飲み忘れる」問題を、プログラミングで解決したいと思います。まずはゴールを決めましょう。
実際に薬を飲みこんだかを確認することは難しいので、「薬を飲んだ」=「薬のケースが開いた」としたいと思います。
- 薬のケースが開いたかどうかを確認する
- 8時間ごとに薬のケースが開かなければ音で通知する
- 薬のケースが開いたら音が止む
これで解決できそうですね。ポイントは薬のケースが開くまで音が鳴り続けること!確実に薬を手にできる仕掛けです。
1は、micro:bitの光センサーを使ってケースが開いたかどうか(明るくなったか)を調べたら良さそうです。2と3は、条件判断と変数ブロックを使って経過時間を測り、micro:bit内臓のスピーカーでアラームを鳴らすことにしました。
60秒でためしに動かしてみた動画はこちら!
プログラミング

最初にアラームの音量と、変数を設定します。変数では薬箱のふたが「閉じている時間」をカウントします。最初は0にしておきます。

次に条件です。もしも明るさが10未満で、かつ「閉じている時間」が28800未満なら、「閉じている時間」の変数を1だけ増やして1秒待ちます。ちなみに28800は8時間を秒に変換した数字です。
つまり、箱のふたが開かなければ「閉じている時間」の変数が1秒ごとに1ずつ、永遠に積まれていきます。

二つ目の条件です。①でなければもし、明るさが10未満で、かつ「閉じている時間」が28800以上なら、音を鳴らします。
これは「閉じている時間」が28800に到達、つまり8時間経過してなお箱のふたが開いていない場合はアラームを鳴らす、というプログラムです。
ここでは変数を1増やして1秒待つのは無くても良いですが、例えばプラス60で音を変えたり、80で音量を上げたりといった条件を追加したい場合にあるといいと思います。

最後です。①と②の条件に当てはまらない場合、「閉じている時間」を0にして、音を停止します。
これは、箱のふたが開いて明るくなったらアラームを止めるプログラムです。1ずつ積んでいた変数もここで0に(リセット)します。
完成したプログラム
ちなみに...
最初に作ったプログラムでは8時間をカウントするために「稼働時間」というブロックを使っていました。
(失敗例)
でもこれだと、最初の8時間をカウントすることができても、ふたを閉めたら音が再び鳴ってしまって、うまくいきませんでした。
詳しい人からのアドバイスによると、どうやら「稼働時間」というブロックは、電源が入っている間はずっとカウントを続けてしまうので、今回のプロジェクトのように途中でリセットしたい場合には向かないようです。
プログラミングって、意図する動きをさせる方法に正解はなくて、むしろ何通りもあっておもしろいですよね。
ぜひご家庭の困りごとをお子さんに相談して、一緒にプログラミングで解決してみてください。この記事の中で専門家の阿部先生がおっしゃっているように、「お母さんの役に立てた!」と感じたお子さんは自信がついて、きっと「次またやってみよう!」とどんどん考える力が育つ助けになると思います。
最後まで見てくださりありがとうございます。また次回お楽しみに!