2014年8月9日土曜日

OLED(有機EL)モジュールお試し

関ハムやFDコンテストも終わってひと段落、これまた中断していたDDSVFOの開発を再開しようとブレッドボードに組みなおしました。

今度はMCUを20ピンの18F14K22から28ピンの18F26K22に変更しました。

18F26K22はプログラムメモリが64KB、RAMが4KB、EEPROMも1024Bと各メモリの搭載量が多く、また動作クロックも最大64MHzと高速なのに値段が安い、と18Fシリーズの中ではコストパフォーマンスが高いというところに目をつけて採用しました(秋月で1個220円で購入しましたが、最近240円に値上げされたようです)。

 ソースの移行については、Config文とクロック関連のレジスタの修正、ポート関連の割り当て変更と、とくに入力系統を内部プルアップが有効になるPORTBに移しました。

 同じ18Fシリーズなので大幅な変更なくMCU移行は無事完了しました。

と、ここで以前から試してみたかったOLEDモジュールへ換装してみました。

使用したOLEDはaitendoで購入した128x64ドット単色グラフィックモジュールです。

表示領域が非常に小さい(1インチ未満)ものの、標準GLCD解像度を持っています。(秋月の超小型GLCDは128x48です)

インターフェースは4線SPI専用なので、ハード的にはGLCDとそのまま置き換えが可能です。ただ、最初戸惑ったのはピンの名前でした。4線SPI信号線は、
・CS(チップセレクト)
・D/C(データ・コマンドセレクト)
・SDI/SDO(シリアルデータ入出力)
・SCK(同期クロック)
という名前が通常だと思っていましたが、このモジュール(他のaitendoのモジュールもでした)では、見慣れない"AO(A0?)"と表記されたポートがありました。aitendoのサイトにはポートの説明が何もなかったので、サンプルプログラムをDLしてソースファイルを見てみたら、どうやらD/Cと同じだろうということで落ち着きました。

しかしAO(A0?)って何の略でしょう。わかる方いらっしゃいます?

ポートの謎が解けたところで今度はソースの変更ですが、コントローラーチップのマニュアルを読むと表示制御コマンドは一般的なGLCDと同じため、モジュール初期化部分の追加だけでよく修正はきわめて容易でした。


 OLEDとGLCDのスタートアップ画面比較。OLEDは縦方向が64ドットなので下4分の1が表示されません。通常はOLEDのほうが白黒反転しますが、コマンドでスタートアップのときのみ反転させています。同じもの表示させてもまったく印象が違いますね。


 スタートアップ後の通常画面。表示領域が小さいのにコントラストがくっきりしていて離れたところからでも視認性は格段に上がっています。また表示切替時の残像も皆無で小気味よいです。

 
消費電流はまだ確認していませんが、コントラストを強くすると電流が上がってしまうのでコマンドでほとんど低いほうにあわせていますが、表示的にはぜんぜん問題なさそうです。

というわけでOLEDは表示器として十分以上に使えそうです。ただしひとつだけ問題が…


撮影したiPhoneのカメラの表現力がいまひとつでわかりにくいですが、いわゆる焼きつき現象です。数分のみ放置しただけで、長時間点灯部分のドットの残像がすでにみられます。サイトを巡回してみるとOLEDいわゆる有機ELディスプレイの焼きつき現象があちこちで話題になっていました。そういえばソニーのPSPも一時有機ELを採用したかと思えばまたTFT液晶に戻していたのを思い出しましたが、焼きつき現象が原因のひとつだったのでしょうか。あくまで勝手な予測ですが、バックライトが不要で表現力が高いと評価されていたOLEDもなかなかメジャーになれなかったのは、この現象に対する根本的な有効策が見つからないからなのかもしれませんね。

とりあえずこのモジュールでも従来の秋月ミニGLCDでも使えるように開発を進めていこうと思います。

0 件のコメント:

コメントを投稿