FC2ブログ
2018-01-19 11:36 | カテゴリ:コンピュータ
さて、まずは第一の項目

1)マトリクスLEDを制御しているIC(LEDの基板に乗っている制御IC)からPythonで使えそうな関数を調査。

から始めました。

このICは、「max7219」というICで、SPI通信でデータを受信して、接続されたマトリクスLEDを制御します。
以前、PICでこのLEDを使用した際は、自分でLEDの駆動関数を作成し、SPIでデータを送り出して、点滅させていました。
もし、Pythonでこれが簡単に実現できる「関数」が用意されていれば、便利です。

いろいろ調べてみると

こちらのWEBサイトにその様なライブラリ関数があることがわかりました。

https://pypi.python.org/pypi/max7219

max7219 0.2.3
A library to drive a MAX7219 LED serializer using hardware spidev
(TH0101)
TH0101.jpg


この様な書式で呼び出すと、所定の文字(msgで定義された)を表示します。

show_message(device, msg, fill="white", font=proportional(LCD_FONT), scroll_delay=0)

付属のデモプログラムを実行してみました。

TH0102)
TH0102.jpg

すんなりとでも画面が表示されました。


続きは、、、



前回に自作して苦労した「フォントデータの回転」などを考えずとも、この関数を使用すれば文字列を与え、フォントを指定するだけで、表示方向やら回転やらかなり自由にかつ簡単にできそうです。

テスト的に先日見つけた極小フォントの美咲フォントのTTFファイルをDLしてトライしてみましたが、ASCIIは1バイトコード、日本語は2バイトコードなので、そこではじかれてしまうようで、手軽な方法はダメでした。
他に回避策があるかもしれませんが、とりあえず次の案を検討します。


さて、次の課題は、

(2)見つけた極小フォント(美咲フォント)の使い方の調査。

そこで、美咲フォントを直接読み込んで、自作ルーチンでLEDに送り出すプランを検討しました。

幸いにも美咲フォントにはTTF以外にPING形式のデータがあり、これをWIN10のペイントブラシに読み込んでBMP形式で出力すれば、ドットマトリクスのフォントになりそうです。


TOMOSOFTさんのブログに(https://tomosoft.jp/design/?p=8056)
「EUC-JPコードを用いた美咲フォントへのアクセス方法」


にBMP形式のデータをフォントとして利用し、ドットデータを得る方法(C言語)が説明されていましたので、それを勉強して、Pythonで作り直しました。

(TH0103)
TH0103.jpg


所定のフォントデータをBMP形式で処理して、ファイルにし、パイソンで読み込んでみました。
あっ、注意点です。
BMPファイルは、データの終端が先頭になって書き出されているとのことなので、BMPファイルは、180度回転させて保存する事で、先頭から読めます。
また先頭にはヘッダ情報が書き込まれているので、そこは飛ばし読みします。

(TH0104)
TH0104.jpg


赤い枠で囲んだデータが、ちゃんと読み込まれています。

ここで、プログラムの事を少し説明します。
Pythonは、変数の型を指定しなくても自動で判断してくれます。(良い面と悪い面がありますが)
今回のフォントデータは、Intの二次元配列に読み込んで、それを「バイト形式」読み出しでアクセスしています。
そのままでは扱いにくいので、Int形式に変換し、内容をprint()して確認しています。
その変換式がこのようになります。

(TH0105)
TH0105.jpg


フォントデータが読み込めることが確認できたので、実際のコードを指定して読み込んでみます。
美咲フォントのアクセスは、JISコード(句点コード)にならって行います。
例えば、「あ」のコードは、0x0402(16進)で、ここで、04は句、02は点として表現します。
この句点コードを指定して、フォントをアクセスしました。

(TH0106)
TH0106.jpg

例題のとおり、「あ」の句点コードを入れると、ちゃんと「あ」のドットデータが得られました。
遠くからよく見ると、「1」をなぞると「あ」に見えます。(心の美しい人にだけ見えます)(笑)



もう、美咲フォントさんと、TOMOソフトさんに大感謝です。
調子に乗って、「あ」以外の漢字を出そうとして、今度は「日」を試してみました。
ところが、エラーが出ました
配列の範囲を超えているというのです。

またまた問題です。
どこが悪いのか、、、、、



関連記事

管理者のみに表示する