2014年11月22日土曜日

画像(ビットイメージ)表示

テキスト表示の基礎はひと通り説明しましたので、今回は画像(ビットイメージ)表示をしてみます。
ここでもArduinoUnoとVFDモジュールの接続は前回同様です。

画像といっても縦16ドットですので制約はありますが、工夫次第でテキスト表示とは違った幅広い表現が可能になります。少し長文になりますが、よろしければお付き合いください(^_^;)


画像表示は、リアルタイムビットイメージ表示の機能を利用します。
画像データは縦8ドットを1バイトのデータとして、左上からはじまり左下・・・と順次右側に移動します。16x16ドットの画像は32バイトのデータになります。(下図参照)


画像データはPROGMEMを使ってフラッシュメモリ(プログラム領域)に格納して、順次読みだして使うことにします。プログラム領域は32kBありますので、多くの画像データを取り扱うことができます。

最初の画面は、テキスト表示のあとに16x16ドットのお天気マークを表示しています。
(曇りマークがコッペパンみたいですが、ほかのマークと並べると雲に見えます・・・)
画像の左上がカーソル位置になりますが、画像表示をしてもカーソル位置は維持されますので、この例では5個のマークが上書きになっています。

次の表示は、カーソル位置を変えながら画像表示をしています。
このVFDはドットが少し縦長になっているので、16x16の画像が少し縦長になります。そこで32x16ドットに拡大したデータも作って表示しました。この場合は64バイトの画像データになります。

次は白黒反転した画像が画面右側からスクロール表示されます。
VFDの表示メモリは512x16ドットあり、そのうちの280x16ドットが見えています。裏画面(見えていない表示メモリ)にリバース機能で反転した画像を書き込み、スクロール表示アクション機能で右からスクロール表示をしています。2バイト(1列)づつ指定回数シフトを繰り返すことでスクロール表示になります。
一旦停止後、今度は左から右へのスクロールになります。これも先ほどと同じスクロール表示アクション機能を使っています。なぜ逆のスクロールができるか・・・?・・・サンプルコードを見て考えてみてください。

最後に1画面280x16ドットの画像を2つ表示しています。
このVFDモジュールは漢字フォントを搭載していませんが、漢字の画像を作って表示することで漢字のメッセージなども表示できます。

     サンプルコード : GU280X16_ArdinoUno_sample3.txt

     Arduino IDE 1.6x系のバージョンではPROGMEMのところでコンパイルエラーになります。
     PROGMEMのデータ型を次のように変更して下さい。(2016/10追記)
      prog_int16_t → const uint8_t

1画面280x16ドットになるとデータ数は560バイト、データの変換も大変ですので、簡単な変換ツールを用意しました。GU280X16G以外の製品にも使えるよう、画像サイズ横512x縦128ドットまで対応しています、よろしければご利用ください。

画像データ変換ツール : BMP-VFDdata_v100.zip

次回は、画像表示を使った簡易アニメーション表示の予定です。

0 件のコメント:

コメントを投稿