たとえばロボットなんかを作るとかいう授業は割とあるようだけど、それではやや難解だと思う。昔受けたことのある制御プログラミングの授業でライントレーサー(黒く塗られた場所を追いかけて走る車)のおもちゃを作ったのは楽しかったが、その時点ですでにプログラミングができる生徒以外はついていけていないように見えた。
箱を開けるという課題はどうかなと思う。
中には何かご褒美が入っている。たとえばチロルチョコでも良い。大したものではなくてもいい。開けるのが目的である。箱には、鍵がかかっている。箱の内側からソレノイドなんかがオンになっているときだけ開くようにしておく。ソレノイドは制御用の装置(マイコンやArduino)に一定の操作が加えられたときに動作するようにする。制御装置は更に別のArduinoのポートと接続されていて、このArduinoのUSBポートだけが箱の外側からUSBケーブルを挿せるように露出している。つまりこれのプログラムを自分で書いて、制御装置と通信して、この箱を開くのが課題というわけだ。
生徒はそのArduinoと制御装置の接続についての設計図と、通信の仕様を渡される。これは別にクイズじゃないので、その部分を隠蔽する必要は一切ない。どうやってやるか、という実装部分を考えて、調べて書くのが目的なので、説明する必要はないが、どうすれば開くのかということについてはちゃんと書けば良い。内容はレベルに応じて複雑にしたり、いろいろなことを考えられるが、たとえば簡単ならこんなものが考えられる。
- Arduinoの特定のポートをオンにすると制御装置が起動する
- 制御装置との間にシリアル通信を起動して動作の準備が出来ると、readyと送ってくる
- Arduinoからopenと返すと箱が開く
簡単すぎるかもしれないが、最初はこんなものだろう。
ここから、次に制御装置からの応答がランダムに決定して、それに応じて対応を変えなければならない(分岐)というものだとか、応答を記録しておいて一定数になるまで待つ(繰り返し)など、どれだけでも複雑にしていくことが出来る。
どうだろう。問題が解けたかどうかということが、箱が開くという形で非常にわかりやすくしめされるので、なかなか良いのではないかなと思う。
もちろん学校なんかでやるにはコストも手間もかかりすぎてダメだろう。でも、私が自分の子どもに作ってやるだけなら、どうってことはない。せいぜいちょうど良い箱とうまく内側からロックできるかというところが問題なだけで、あとは簡単なものだ。
一度作ってみて、子どもに見せてみようかなと思う。もっともうちの子はまだ幼稚園で、ひらがなも全部は分からないという状態なので、さすがに早すぎるだろうが。
*