前回より、もう少し実用的なタイマーを2種類作ってみます。
そら豆タイマー
この記事を書いている季節は冬なので、完全に旬を逃していますが、今回は「そら豆タイマー」を作ってみたいと思います。
「そら豆タイマー」って勝手に作った言葉なんですが、何のタイマーかというと、その名前の通り、そら豆を茹でる時のタイマーです。
それって、茹でる時間を計るだけでいいんじゃ?、って思うかもしれませんが、そら豆はもうちょっと奥が深いんです。
そら豆ってよく見ると、こんな感じで2種類あります。
ヘタ(?)の部分が黒っぽいものと、淡い緑色のものがありますよね。この違いはそら豆の成熟度合いに起因しています。そら豆は鞘の中で、この部分と鞘が繋がって栄養をもらっています。豆が十分な栄養を蓄えると、そら豆は自分からこのつながりを切ります。
この部分が黒っぽいものは、この栄養もらう繋がりを切ってしばらく経過したものです。少し硬くなってきているので少しだけ茹で時間を長くするとホクホクになります。
淡い緑色のものは、まだ栄養をもらうために鞘と繋がっているものです。豆がまだ若いため、茹で時間はちょっと短めがいいようです。
茹で時間ですが、黒っぽいものは3分程度、淡い緑色のものは2分30秒程度が最適な茹で時間のようです。
ということで、そら豆を美味しく茹でる「そら豆タイマー」を作りましょう。
実装は以下の仕様とします。
- タイマー時間は3分
- タイマー開始から30秒経過したら、淡い緑色の豆を投入する合図をする
これで美味しいそら豆を茹でることができますね。
あれ?、そら豆は食べないですか?
では、次の課題に進んでください。
ポモドーロタイマー
「ポモドーロ・テクニック」って聞いたことはありますでしょうか。
試験勉強などをする時、何時間も机に向かっていると集中力が続かないですよね。このような時は、短時間作業を集中して、ちょっと休憩する、ということを繰り返すと集中力がより継続するようです。
ポモドーロ・テクニックとは、以下のように作業を進めて集中力を維持するテクニックです。まず25分集中して作業をします。その後5分休憩します。これを1セット(「1ポモドーロ」と呼びます)として、3〜4セット繰り返します。3〜4セット繰り返したら、長めの休憩(15分〜30分程度)をとります。
この「ポモドーロ・テクニック」はフランチェスコ・シリロ氏により発明され登録商標にもなっています。「ポモドーロ」という名前は、氏が使用していたトマト型のキッチンタイマーにちなんでつけられたそうです。
ただ、個人的にポモドーロ・テクニックを使用することもありますが、25分集中、5分休憩を2セット繰り返すと、そのあとの集中時間はもう少し短い方がいいと感じています。
そこで、基礎編の最後のチャレンジ課題は、自分にあったポモドーロタイマーを作ることにしたいと思います。
基本仕様は以下の内容とし、実際に使ってみて自分に合わせたタイマーにすると良いと思います。
- タイマースタート
- 25分経過したら休憩の合図のアラームを鳴らす
- 5分経過したら作業再開の合図のアラームを鳴らす
- (2)(3)を3セット行ったら最後に作業終了のアラームを鳴らす
なお、このポモドーロ・テクニックは、勉強に限らず、掃除など、何か一気に作業を進めたい場合に向いていると思います。
更新履歴
日付 | 内容 |
---|---|
2016.12.5 | 新規投稿 |
初めまして。質問させてください。
以前の記事にunsigned char型の変数だとfor文で256以上の繰り返しをできないので、より繰り返しが必要になる場合はより数を保持できる型を使用したほうがいいとの指摘がありました。また同記事ではその場合メモリを食い処理時間もかかるので、いかに効率よくプログラムをするか考えたほうがいいということも付け加えられていました。
そこで本記事のプログラムを作る場合、unsigned char型を使ったfor文でfor(timer=0; timer<240; timer++)として、これを4回繰り返したのちに、for(timer=0; timer<60; timer++)とすれば25分を作れると思うのですが、メモリの観点からは効率化されているといえるのでしょうか? それともプログラム分が多くなる分効率が悪いとなってしまうのでしょうか。
上位の型を用いたほうがあとで書き直しがしやすいというのは理解できますが。
横からすみません。
上位の型を用いるほうが簡単ですね。
MPLAB X IDEでビルドすると、下記のような表示が出ます。
(これは課題を行った結果ではなく別のPICマイコンの別プログラムでの表示です)
Memory Summary:
Program space used C1Dh ( 3101) of 1000h words ( 75.7%)
Data space used 4Fh ( 79) of 170h bytes ( 21.5%)
EEPROM space used 10h ( 16) of 100h bytes ( 6.2%)
Configuration bits used 2h ( 2) of 2h words (100.0%)
ID Location space used 4h ( 4) of 4h bytes (100.0%)
これを見てプログラムスペースに余裕があるのかデータスペースに余裕があるのかで判断されれば良いのではと思います。
組み込みマイコンプログラムなので使うPICマイコンに合わせてどちらが良いかは判断された方が良いと思います。
申し訳ございません。
最初のコメントに対して、コメント通知を逃してしまったようで回答しておりませんでした。
C言語などの変数型を指定するプログラミング言語では、使用する数値範囲に合わせた型を使用するのがよいと思います。例えば60分タイマーを秒でカウントする場合は、3600秒までカウントする必要がありますので16ビットの型を用いる、などです。
ただ、村雨さまがコメントしてくださっているように、プログラム容量、メモリ容量に余裕があるのであれば、ご自身がプログラミングしやすい方でご判断いただくのが良いかな、と思います。
ところで、最近は組み込みでMicroPythonが使用されるケースが出てきましたので、そのうち組み込み系でもメモリをあまり気にしないようになってくるんでしょうかね。