役に立つプログラムとハードウエア

先週、奥さんの瑞希さんに、料理をすると約束させられて
しょげている哲さん。今日は、心なしか、元気が出ない。
料理のことで、頭がいっぱいで、マイコンの話に集中でき
そうにもない。愛犬ロボは、自宅にない涼める敷物が気に
いり、早足で啓二さんの仕事部屋までやって来る。では、
今日も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 盛り付け
     皿に、ミニトマトを切って、円の中をあけて、まるく並べる
     フライパンで温めたチーズ入りちくわを、皿に入れる
     好みで、冷やしラーメンのたれをかける

戻る