卓上電光掲示板
完成したのは1998年1月1日です。
■製作のきっかけ
秋葉原の某電子部品店で、8×8の赤、緑2色表示ドットマトリックスLEDが売られていました。
これを並べれば、電光掲示板ができると思い、作りました。
はじめは、10個のドットマトリックスLEDで簡単に製作し、スクロールを眺めて楽しむ 予定だったのですが、基板の上にLEDを並べてみると、物足りない雰囲気だったので、 思いきって20個にしました。
横80ドット、縦16ドットあり、漢字5文字(半角10文字)を同時に表示できます。
緑、赤、橙色の表示ができます。橙色は緑と赤を同時に点灯させます。
■回路
壁に掛けたり、机の上に置いて表示できるようにしたかったので、V25CPUを載せて 自走できるようにしました。
ドットマトリックスLEDにドライバーなどがついたモジュールもあるのですが、 この電光掲示板はドライバーも何もついていないただのLEDを使用しています。
「卓上」ということなので、13×26cmの基板の上に全ての部品を載せました。 I/OとLEDのドライバーをそれぞれ用意したのでは、場所をとってしまい、このサイズの基板には 載りません。
そこで、74HC574,573 (D-FF、ラッチ)をI/O兼ドライバーとしました。 74HC573と574を採用したのは、ちょうど家にあったからです。データブックによると、 1つの出力ピンが吸い込むことのできる最大電流は6mAとなっていましたが、無理をして8〜9mA ほど流しています。
74ACを使えば余裕なのですが、I/Oだけで6000円になってしまいます。 74HCにがんばってもらうことにしました。
LEDへの電流を制限する510ohmの抵抗は、載せる場所がなかったので、全て半田面に並べました。 ICの数を減らすため、メモリーマップドI/Oにしました。
ACアダプターはいらなくなったFDD用7Vの物が家にあったので、これを利用しました。
製作費は、約1万5000円です。
■表示フォント
漢字ROMを載せることを考えていたのですが、自走させることと、 表示内容を編集するときの手間、たくさんのフォントに対応させたいことも考え、 漢字ROMを載せるのはやめました。
代わりに、256kbitのS-RAMを載せ、これにパソコンから表示内容のデータを転送することに しました。表示内容は、スクロールのモード(垂直、水平など)、色、文字のビットマップデータ などで構成されています。
S-RAMのバックアップには、1Fの電気二重層コンデンサ(ゴールドキャパシタ)を使いました。
■電光掲示板本体のソフト
ソフトは、C++で書いたのですが、いざダイナミック点灯させてみると、 チカチカ光ってしまい、同時に表示しているように見えませんでした。
表示データをRAMからI/Oに転送してLEDをONにするという単純な操作でも、 アセンブラの出すコードに無駄が多く、十分速く点灯を切り替えることができていませんでした。
そこで、ダイナミック点灯とスクロールをさせる部分はアセンブラで書きました。
■専用のコントロールソフトで表示内容を編集
表示内容の編集は、Windows95上で行います。専用の電光掲示板コントロールソフトも 製作しました。これは、BorlandのC++Builderで製作しました。
ワープロ感覚で文を入力し、色の指定、フォント、文字修飾はマウスでなぞって ツールバーのボタンを押すだけです。スクロールモードを変えるには、\マークで始める 制御文字列(例えば\normal, \up など)を入れるだけです。
表示内容(原稿)はリッチテキストフォーマットで保存できます。
文章の編集が終わったら、ツールバーにある表示データ作成ボタンを押します。 すると、電光掲示板へ転送するデータが作成されます。これは至って簡単なもので、 画面の一部に表示する文字を1文字ずつ表示していき、そのビットマップデータを記録するだけです。
単純な仕組みですが、この方式ならWindowsの全てのフォントが利用でき、太字、下線、斜体などの 文字修飾も使えます。
フォントを変更しても、ビットマップデータが変わるだけなので、どんなフォントでも一括して 扱えます。
緑と赤それぞれの色についてのビットマップデータを保存すると、データのサイズが大きく なってしまうので、1文字ずつ文字色を指定する方式にしました。 色指定と、ビットマップデータを分離し、電光掲示板が表示するときに赤、緑のビットマップデータを作ります。
■電光掲示板用のデータ
RAMに転送される電光掲示板用のデータは、下表がいくつも縦に並んだようなものが作成されます。 (スクロールモードを変更するごとに1つできる。)
0 スクロールモード 1 文字数(1バイト文字として) 2 スクロールの変数1 3 スクロールの変数2 4 色指定 1(1文字あたり2ビット) ... ... 色指定 n ビットマップデータ 1 ビットマップデータ 2 ... ビットマップデータ m
全角文字はビットマップデータで32byteとるので、RAMに1000文字程度の文を記憶させることができます。
■データ転送
表示データを電光掲示板へ転送するには、EIA-232でパソコンと接続し、ツールバーの転送ボタンを押すだけです。しばらく待つと、今編集した文が表示されます。
■感想
秋葉原で2色発光のドットマトリックスLEDが売っているのは知っていたので、いつか作ろうと考えていました。
今回、いよいよ製作意欲がわいたので、作り始めることにしました。 気軽にチョコチョコッと作って机の上に飾ろうと思っていたのですが、16×40ドットでは 漢字2.5文字しか表示できません。欲が出てきて、倍の幅の物を作ることにしました。
早速20個のLEDを並べて、半田付けしました。LED1つにつき24本の足があり、さらに抵抗を半田面に並べたり、I/Oの配線もしなければならないので、大変だということは承知していたのですが、想像以上につらい作業でした。 本数はもちろん、単調な作業ですぐに飽きてしまいました。バッファーなどがついて、簡単に使えるドットマトリックスLEDモジュールを使えば楽だったのにと思いましたが、すでにLEDを半田付けしてしまったので後に引くわけにもいかず、毎日ノルマを決めてこつこつがんばりました。
配線が終わり、ダイナミック点灯させてみるとチカチカして、一時はどうなることかと思いました。 これは、先ほど書いたとおり、プログラムの変更で解決しました。
いろいろつまづきながら、何とか完成に近づき、自分の名前が表示できたときには感動でした。
スクロールの時にもたくさん失敗し、やっとスクロールできるようになったので、 文字が流れたときにはただ「うれしい」の一言につきました。
今回製作した電光掲示板は電子工作を知らない人でも、見ればわかる物なので、 家族も見て喜んでくれました。 (いつもは、「なんだか訳のわかんない物ばっかり作って」と思っているのかも?)
機能が増えるごとに廊下に飾りました。
時々点灯させてみたり、部屋の出窓から外に向けてメッセージを流したりしています。
(C) Ishijima Seiichiro 1999