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

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

2014年11月17日月曜日

テキスト表示2(もう少し応用編)

ご希望の方に配布しているVFDモジュールサンプルの使い方講座その2です。
今回は9月3日投稿のテキスト表示1に続いてのテキスト表示2(もう少し応用編)です。

ArduinoUnoとVFDモジュールの接続は前回同様です。


5x7フォントの間隔について、初期値は左右1ドットをあけて7ドットで1文字、つまり2ドット間隔での表示になります。VFDモジュールには、この間隔を変更する「キャラクタ表示幅指定」の機能があり、以下の4種類から選択できます。
 ・固定文字幅1(右側1ドットスペース)
 ・固定文字幅2(両側各1ドットスペース)・・・初期値
 ・プロポーショナル1(右側1ドットスペース)
 ・プロポーショナル2(両側各1ドットスペース)
初期値では1行当たり40文字の表示ですが、固定文字幅1では46文字表示できます。
プロポーショナルフォントは横幅の小さい文字の間隔を詰める機能です。

次に横スクロール機能を使った表示例です。
画面左端から書き始めると、画面右端まで行ったところから横スクロール表示になります。
文字の書き込み位置(カーソル位置)を画面右端に設定すると、右端からのスクロール表示になります。

最後は、ユーザーウィンドウ機能の例です。
このVFDモジュールは4つのユーザーウィンドウを登録して、切り替えて表示することができます。
この例では、上段の X=70 から 140ドット の範囲をユーザーウィンドウ1に設定して、文字を書き込んでいます。文字書き込みのほか、画面クリアなどの機能もユーザーウィンドウ内のみに有効になり、カーソル位置はウィンドウ左端が(0,0)になります。

サンプルコード: GU280X16_ArduinoUno_sample2.txt
(初期の共有設定が公開になっていませんでした、申し訳ありません。現在は自由に閲覧できます。)

次回は「グラフィック表示」の予定です。

2014年11月10日月曜日

VFDサンプル提供します(part 2)

11/2の伊勢ギーク・フェアでVFDサンプルをご希望の方に提供いたしましたが、予想以上に好評で手持ち分はすべてなくなってしまいました。
このたびメーカー様よりさらに追加のサンプルをいただきましたので、ご希望の方がございましたら郵送等にて提供させていただきます。

VFDモジュール自体は無償ですが、輸送料金のみ着払いにてご負担をお願いします。

VFDモジュール概要:
 外形サイズ:182x33.5mm
 表示ドット数:280x16ドット(5x7フォント40桁2行、グラフィック表示可能)
 インターフェース:非同期シリアル、同期シリアル、8bitパラレル
 電源:DC5V
 詳しくは仕様書をご参照ください。
 FreeSample280x16仕様書
 FreeSample280x16フォント仕様書

梱包は小型の段ボールケース(外寸約220x130x55mm)を予定しています。
重量はVFDモジュール2台入りで約240gです。
送料着払いのため「ゆうパック」または「ヤマト宅急便」での発送とさせていただきます。


ご希望の方は vfd-fun@post.nifty.jp まで下記内容を記載してご連絡ください。
(メールアドレスは@を小文字にしてください)

・送付先
  郵便番号
  住所
  氏名
  電話番号
・送付方法(ゆうパック、またはヤマト宅急便)
・配達時間帯(ご希望があれば)
・希望台数
  ※基本は1人2台までとさせていただきますが、具体的に作りたいものがあるとか
   グループでの申し込みなど、複数台ご希望の場合はご連絡ください。
   (ご希望に添えない場合はご容赦ください・・・)

発送元は三重県度会郡です。
到着後の製品に関するお問い合わせは、製造メーカーではなくvfd-funまでお願いします(^_^;

では、ご興味のある方からのご連絡をお待ちしております。

2014年11月4日火曜日

伊勢ギーク・フェア終了

11/2の伊勢ギーク・フェアが無事終了しました。

1人展示のため結構忙しく、会場写真を撮るのも忘れておりました。
ということで会場で使った貼り紙などの残骸の写真です。


私の展示の一番人気は「大型電卓」でした!(電子工作に興味ない方にも懐かしいと好評でした)
Geek-Clock(時刻・為替・天気表示)も、PCからの4台制御の方法やネット上から情報を取得する方法など興味を持って聞いていただき、急ぎで準備した甲斐がありました。
PCやArduinoのソースコード公開のご要望もいただきましたので、少し手直しをしてからこのブログに掲載する予定です。

VFD単管で作ったアンプ持参の学生さん(真空管3000本保有とのこと)や計算尺を使ったことのある同世代の方など、いろいろな方とお話ができ楽しい時間を過ごさせていただきました。

VFDの無償サンプルは希望者がいるかどうか心配でしたので、とりあえず半分車に残して半分を会場に持ち込みましたが、幸いにも好評で昼ごろには残り分を車に取りに行きました。最終的には準備した55台すべてをもらっていただくことができました。(恐るべしギーク・フェア!)
配布に際して特に条件は設けませんでしたが、作品などができたら皆さんのブログ等で公開していただけると嬉しいです。

主催者のみなさん、出展者のみなさん、本当にお疲れ様でした。

2014年11月1日土曜日

Geek Clock テスト2

11/2ギーク・フェア当日は休日で為替レートの情報更新はありません。

このままでは前週末レートの固定表示になってしまうので、表示内容に天気情報を加えました。
一番上は日付と時計、2番目は為替レート(ただし明日は情報更新なし)、3番目に当日の天気、4番目に明日の天気を表示します。天気情報は、Yahooホームページからいただいております。


天気情報は1日を3時間づつ8つの時間帯に分けたもので、VFD1台に1日分が表示できます。
当日すでに過ぎてしまった時間帯の情報は反転表示にしています。

写真は今日と明日の情報ですが、明日も朝は雨が残りそうです・・・


Geek Clock テスト

8月にテストした「蛍光表示管×4本表示」をパネルに取り付けてみました。
ホームセンターで購入した発泡塩ビ板なので、カッターで簡単にカットできます。

ギーク・フェア展示のため、今回は少し実用的?な表示をしてみたいと思います。
内容は、時計(日付時刻)と為替レートの表示で、時刻情報はPCの時計から、為替レートはネット上で公開されている情報からもらってきます。
ソフト作成は、フリーソフトのHot Soup Processor (HSP) を利用しています。
為替レートは、Yahooファイナンスのページにアクセスして、ソースコードから必要な個所の情報を抽出します。(個人利用の範囲とさせてもらっています)


一番上に日付と時刻を表示、2~4番目にPCの画面上で選択した通貨の情報を表示します。
左から通貨名、更新時刻、為替レート、右端に前回表示のレートからの変化を記号↑→↓で表示します。
通常時は時計のコロンが点滅し、約10分ごと(情報源に依存)に為替レートが更新表示されます。
このソフトでは、米ドル、ユーロ、英ポンド、スイスフラン、カナダドル、豪ドルから選択できます。英ポンドは自転車乗りには結構重要な通貨です。。。自転車関係の通販会社が多いので。。。


パネルの裏側です。滑り止めのゴム足をつけました。
VFDは Arduino micro から非同期シリアルで接続していますが、ロジックIC(OR)を使ってシリアル信号を必要なVFDに分配しています。


接続図はこんな感じです。
PCとVFDを1対1で接続する場合は、PCのシリアル信号をレベル変換して直接つなげばいいのですが、今回は4台に信号を分配する必要があります。そこで、PCからArduinoに2バイトづつ送信し、最初の1バイトでVFDの選択を、次の1バイトでVFDを制御するコマンドを送るようにしました。ArduinoはPCからの信号を受信して、VFDに配信しているだけです。

なんとか目的の動作ができるようになりましたが、ここで大きな問題が!!!
ギーク・フェアは日曜日なので、為替レートの情報が更新されないような・・・・・・・・・・・・・・・(T_T)