●液晶ディスプレイ
さて、3つ目の出力デバイスは非常に有用なものだ。
液晶ディスプレイ(LCD)だ。そして、これが液晶ディスプレイだ。ここにテキストを送っている例をお見せしよう。
このデバイスは非常に携帯性に優れている。だって、こうすりゃ諸君らのプロジェクトでもさ、文字を出力できるコンピュータを使わずして文書を表示できるんだからね。
でも、そうするにはどうすりゃ良いんだろう?
これは16×2文字のモジュールだ。これは4ドルだ。めちゃくちゃ安いだろう?
また、諸君はシリアルインターフェイスが搭載されたデバイスを入手することもできる。こっちは4ドルじゃなくて14ドルだけれどもね。
4ドルのLCDを使用するならば、まずはデータシートをまず当たろう。でも、このデータシートは謎に包まれている。これは完全版のデータシートなんだけれども、どうやって通信すりゃ良いのかってことを何も書いていない。
理由としては、これらの小型の液晶ディスプレイモジュールは44780というチップで広く使われているからだ。そして、僕はこのチップは全然好きじゃないんだけれども、LCDと通信する時には標準的なチップなんだ。
だから、そのチップを使っている前提でいるんだよね。しかも、このチップは通信用として使いにくいと来ている。
●基板
では、まずは基板を見ていこう。
LCDと通信する基板には、コネクタを設けているだけだ。そして、このコネクタにおいては、4つのピンがデータ用に用いられる。そして、3つのピンがハンドシェイク(応答確認や設定値交換などの通信)、接地用、コントラスト操作用だ。
そして、これこそがLCDから出力させるものだ。
●Cコード
ここで、C言語のコードを見てみよう。
C言語のコードの下の方を見てもらうと、ルーティンで文字を出力している。
このコードで、僕は愉快なPGMPを使用している。
これにはプロセッサにRAMよりもはるかに多くのフラッシュメモリが搭載されている。ここにメッセージを保存することもできるんだ。しかし、僕はコンパイラにこの命令を用いることによりRAMを用いている。
何の話をしているのかと言うと、フラッシュメモリにデータを保存させる方法を用いることで、使用していないメッセージを保存する場所をもっと多く使うことができる。だって、メッセージそのものは変化しないだろうからね。それをRAMに保存しておく必要はないってことだよ。
そしてこれはメッセージをスクリーンに出力するルーティンだ。
僕はディスプレイを初期化する必要がある。それからメッセージを出力する。通信する事は難しいことじゃない。しかし、ルーティンそのものは非常に厄介だ。だから、LCDを初期化する時に待機する必要がある。このコマンドを三回出力する必要がある。4ビットの通信のために伝達する。これを伝達しなきゃならない。それは2行5×7文字のメッセージを受け取る。ディスプレイをオンにするために、情報を伝達しなきゃならないし、エントリーを許可するためにも情報を伝達しなきゃならない。
デフォルトではこれは何もしない。諸君らはこいつを通信するために準備しなきゃならない。
そして、諸君らは実際のところ、こいつにコマンドを入力することになる。そして、ハンドシェイクにおいては、まさに特殊とでもいうべきタイミングがある。
そして、これらのルーティンはハンドシェイクの全てを実行し、LCDと通信する。
これは、通信の実行を容易にするものではない。しかし、これらのルーティンによって諸君はこの詳細を無視することができる。これがこいつを用いることの正当性だ。そして、これらにより諸君はメッセージをLCDに表示することが可能となる。
諸君はこれらの数ドルという安価な小型のLCDを用いることができる。そして、多くの異なったサイズのものを手に入れることができるし、メッセージを表示するためのローカルのディスプレイとしてそれらを用いることができる。そういうわけで、LCDについて説明した。
(つづく) 講義の目次は 【和訳版】FabAcademy 2016 からご覧ください。 ※この記事は FabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。