先週、奥さんの瑞希さんに、料理をすると約束させられて 役に立つプログラムとハードウエア
しょげている哲さん。今日は、心なしか、元気が出ない。
料理のことで、頭がいっぱいで、マイコンの話に集中でき
そうにもない。愛犬ロボは、自宅にない涼める敷物が気に
いり、早足で啓二さんの仕事部屋までやって来る。では、
今日も2人の会話に聞き耳を立ててみましょう。
哲 :こんちは、また、来たぞ。 啓二:何だよ、浮かない顔して。 哲 :先週、料理をすると約束させられただろう。 それで頭が痛いのさ。 啓二:じゃあ、簡単レシピを2つ教えてやるよ。 ちくわ、ベビーチーズ、オリーブオイルでつくれるもの。 哲 :時間がないんだから、いいよ。 啓二:奥さんから、お墨つきをもらったんだ。 少し遅くなったって文句はでないさ。 哲 :なんて、言い訳するんだよ。 啓二:太田のところで料理をならって、練習して遅くなったで いいだろう。今日は、2つレシピを教えるからさ。夕食 に間に合わないようなら、作ったのをもたせてやるから、 心配するなって。 (急に顔が明るくなってしまう、哲さん) 哲 :そうか、その手があったか。 啓二:ついでに、子供にも教えてやれよ。中学生だから、だん だん食べる量が増えてくだろうし、自分で作れるように なると、株もあがるぞ。 哲 :そんなもんかなあ。ところで、今日は何をするんだ。 啓二:瑞希さんの機嫌をとる、実用的なハードウエアを考えよう。 哲 :何か癪だなあ。 啓二:奥さんの機嫌をとれて、実用的なら一石二鳥じゃないか。 哲 :お前、前向きだなあ。羨ましいぞ、その性格。 啓二:最近、不便に思っていることないかな。 哲 :うーん、そうだな、老眼で遠くにある時計がみえにくく なってきたなあ。眼鏡をかけているから、進行が早いのかな。 啓二:じゃあ、時計を作ろう。 毎日近くのディスプレイを見て仕事をしているせいじゃない のか、見えにくくなったのは。 哲 :そうかもしれないなあ。でも、時計だけじゃ、瑞希は納得 しないと思うんだ。何か+αがないと。 啓二:ふーん。ところでさ、お前のところ、ロボ以外にペット いないのか。 哲 :愛が飼っている熱帯魚がいるよ。 啓二:そうか。なら、自動給餌器を作ろうか。 時計がついているし、時計のタイマーを利用すると、指定 した時刻に熱帯魚の餌を水槽に入れるようにできるぞ。 哲 :おっ、いいねえ。中学生にもなると、部活で遅くなって、 決まった時刻に餌をやれないんだ。 啓二:夜に、餌を入れておくと、朝と夕の2回、自動給餌する ようにしよう。 哲 :手持ちの78kでできるかなあ。 啓二:まずは、考えてみようぜ。 哲 :時計だから、時、分、秒で、6けたあればいいか。 でも、秒なんて居間では必要ないから、4けただな。 啓二:7セグメントLEDを使うとして、7×4=28ビット 必要か。手持ちの78kじゃ、ピン数オーバーだ。 哲 :やっぱり駄目か。 啓二:そんなこともないさ。シフトレジスタを使えば、4ピンで 充分だ。 哲 :どうやるんだ。 啓二:まず、7セグメントLEDのために、7ピン使うだろう。 これをシフトレジスタの出力にまかせる。 そして、クロックとデータを使ってセグメントデータを 78kから出力する。シフトレジスタを2個直列に接続 して時の2けた、分の2けたをそれぞれ担当させるのさ。 哲 :まだ、ピンとこないぞ。フローを書いてくれるかな。 啓二:ああ、いいよ。 ステップ0 時の2けたビットパターンを変数hに入れる。 (変数hは、符号なし16ビットとする) ステップ1 分の2けたビットパターンを変数lに入れる。 (変数lは、符号なし16ビットとする) ステップ2 変数hの最上位1ビットを時用データに出力する。 ステップ3 変数lの最上位1ビットを分用データに出力する。 ステップ4 時用クロックに1を出力する。 ステップ5 分用クロックに1を出力する。 ステップ6 時用クロックに0を出力する。 ステップ7 分用クロックに0を出力する。 ステップ8 16回実行したら、終了する。 ステップ9 変数h、lの値を左に1ビットシフトする。 ステップ10 ステップ2に戻る。 時、分を一度に点灯する。これで、4ビットになる。 哲 :へえ、うまいもんだなあ。4けたを2ビット出力だけ で、できるんじゃないか。 啓二:ああ、やればできるよ。少し遅くなるけれど。 哲 :で、スイッチもいるよな。時刻合わせのために。 各けたの+1処理に1個、けた指定に1個、確定に1個。 最低3個は必要だぞ。 啓二:それだけじゃない。タイマー設定のために、最低1個 は必要だ。時計のための時刻合わせと、タイマー用の 時刻合わせがな。 そして、2つ以上のタイマーを使うとなれば、その指定も。 哲 :最低、5個か。5ピン使うのかよ。 啓二:そうだな、5ピン使うか。でも、5ピン使うからって 5個のスイッチが最大数じゃないぞ。 哲 :どういうことだよ。 啓二:ダイナミックスキャンすればよい。 5本のうち、1本を出力、他を入力にすると4入力だ。 5本のうち、2本を出力、他を入力にすると6入力だ。 哲 :うーん、まだわからない。 啓二:じゃあ、図で説明してやろうか。2本の出力をA、B として、入力をIN0、IN1、IN2とする。 スイッチが1を出力したとき、その入力があったとする。 ステップ0 Aに1を出力し、Bに0を出力する。 ステップ1 3入力IN2、IN1、IN0を読込む。 ステップ2 変数Sの2、1、0ビットにIN2、IN1、IN0 の値を入れる。 ステップ3 Aに0を出力し、Bに1を出力する。 ステップ4 3入力IN2、IN1、IN0を読込む。 ステップ5 変数Sの5、4、3ビットにIN2、IN1、IN0 の値を入れる。 ステップ6 変数Sの6ビットのうち、1になっているビット があれば対応する処理実行にフラグを立てる。 ステップ7 ステップ0に戻る。 哲 :おおっと、5ピンで6入力ができてしまったぞ。 啓二:これで、5ピン+4ピンで、9ピンだ。 外付け回路を工夫し、プログラムを工夫すると、ピン数が 少ないマイコンでも、いろいろと出来るだろう。 哲 :うん。Windowsと違って、アイデアを出したり、組み合わせ たりでいろいろと化けるんだなあ。 お前、こんなことをずーっとやってきたのか。 啓二:そうさ、途中Windowsのアプリケーションも作っていたけれど、 さっき説明したような方法でシステムを構築したこともある。 LSI設計では、ステップを決めて、一気呵成に並列動作にが 常套手段なんで、その方法を応用したまでさ。 それに、世の中、Windowsマシンよりも、こんなようなことを やっているコンピュータの方が、多いんだぞ。 哲 :じゃあ、それだけ仕事もあるってことか。 啓二:そういうことになるな。だから、零細企業でもやっていける。 少ないパイを奪い合うよりも、たくさんパイがあるところから、 得意な分野の仕事を貰えば、それなりに食える。 哲 :ああ、いいこと聞いた。 少し、この分野で仕事をとってこれるようにしよう。 啓二:それがいいかもな。 日本は、この分野では、トップレベルなんだが、 これからもそうだという保証はない。 そのひとつに教育の問題がある。 で、料理のレシピだ。 (料理のレシピ その1) A 食材の用意 ちくわ:1袋(4本入り) ベビーチーズ:1個 オリーブオイル:少々 ミニトマト B 料理方法 ベビーチーズを長方形に切る。 ちくわの中に、切ったチーズをいれる。 ちくわに斜めに包丁をいれて切る。 フライパンにオリーブオイルをひく。 ちくわからチーズが溶けてでてくるまで、フライパンで温める。 C 盛り付け 皿に、ミニトマトを切って、円の中をあけて、まるく並べる フライパンで温めたチーズ入りちくわを、皿に入れる 好みで、冷やしラーメンのたれをかける