UG-2864HSWEG01/SSD1306 I2Cで動作テスト
2013年10月(製作)/2013年11月(記事公開) OLEDをI2C接続で使ってみました。よくあるグラフィックLCDと使い方は同じだろう、サクッと表示テスト。…と思ったのですが、すんなりとは行きませんでした。 配線、文字データ作成、描画方法について、やったこと/分かったことをまとめました。 |
接続方法と配線図について |
今回の工作ではこのOLEDを、I2C接続、内蔵DC/DC利用、3.3V単一電源で動かしています。 データシートの説明は基本的に、パラレル接続かSPI、かつ、ディスプレイ部の電源を外部供給するパターンで使うことを想定している感じです。I2Cかつ内蔵DC/DC利用のパターンで使うつもりでデータシートを読むと、説明が矛盾していたり分かりにくかったりする点があり、実際に動かせるようになるまで何カ所か勘違いしました。 データシートの図と端子の説明に不満があったので、まとめの意味でも自分で描いてみました。 手持ちの部品で間に合わせてよいか?と考えた場合… VCCのコンデンサ2.2uFはチャージポンプの最終段のはずなので、10uFくらいまでで適当に決めて構わないと思います。VCOMHを使わないなら、このコンデンサも適当な容量でいいと思います。※確定的な根拠はありません。自己責任で。 IREFの400kΩは、VCCの電圧(チャージポンプの電圧)を7.5Vとしたときの計算値です。近い値なら問題ないでしょう。外れた値でも輝度調整に影響が出るだけです。※計算式やこの抵抗が何なのかはデータシートに説明あり。 I2Cでは未使用のデータ線D3〜D7は、実は未配線のままでも動作しています。ですがデータシート通りGND接続が好ましいと思います。※ハンダ付けが辛くてサボった。 【協力】 @tomozhさん @T_colonさん (Twitter) |
文字データ(フォント)を作る | ||||||||||
グラフィックディスプレイはキャラクタLCDのように文字データを内蔵していないので、利用者が自前で用意し、「描画」します。グラフィックディスプレイに文字、記号、画像の区別はなく、表示するデータはすべて画像として扱います。 キャラクタLCDのフォントデータを作成する 電子工作でお馴染みのキャラクタLCDモジュールといえば、SC1602などHD44780互換コントローラ搭載のものです。これのフォントを使いたくてフォントデータを作成しました。LCDのハードから内蔵データを読み込むのではなく、データシートの文字コード表を画像処理してデータ化しています。半自動、人力OCRです。 pdf(dpi単位)をスクリーンキャプチャしてbmp(ドット単位)にする都合上、枠線、マス目、文字形のドットの大きさは微妙に不揃いとなります。bmp画像を整形したり、いびつなドットを読み取れるようプログラム側で対策します。 プログラム
コンソールアプリです。 (1)HD44780のデータシートの文字コード表のページを、サイズ100%でスクリーンキャプチャします。 (2)行/列がところどころ1ドット広かったり狭かったりするので、同じ幅に修正します。 マス内の字形自体は、どれも各マスの中で同じ位置関係にあるようなので、修正する必要はありません。 (3)プログラムに(2)の画像を読み込ませるとPC画面に結果が出力されます。リダイレクトしてファイルに保存します。 ※リダイレクトするとキー入力待ちメッセージが表示されないのでプログラムが暴走したように見えます。何かキーを押せば正しく終了します。 ※写真は表示例です。上記zipにhexファイルは含まれません。 フォントデータは「byte font[ ][ ]」の形(ジャグ配列)で利用することを想定した書式で出力されます。ただし変数の宣言部分はないので、プログラムに合わせて記述を付け足してください。不要なデータを削除して容量を削減したり、英数カナの種別で配列を分けたりしてもよいと思います。 |
描画デモ | ||||
プログラム
|
部品について |
OLEDはAliExpressで購入。aitendoで販売しているUG-2864HLBEG01と恐らく同一のものです。 モノクロ…ということは色による表現力は考えないので、白色にこだわらず青色のものを選んでみました。 基板にポリイミドテープを貼り、基板の穴をふさぎます。ハンダ付けしやすくするため。 そこに端子が乗るようにOLEDを置き、表示部のウラを両面テープで留めます。 端子はUEW(ポリウレタン銅線)でハンダ付け。 最後に保護と絶縁のため、ハンダ付けしたところをポリイミドテープで覆って完成。 マイコンとの接続用に、VCC、GND、リセット、SA0(スレーブアドレスの一部)、SCL、SDAをピンソケットで出しました。 |
◆ ◆ ◆ |
実は初めてモノクロ・グラフィックディスプレイを使いました。 知ってる人には今さらですが、ページ単位でメモリ管理していることを今回知りました。 描画ライブラリを作り込みたくなりつつも、最小限の単純な機能に抑えました。 でも洒落っ気を出して反転描画だけは取り入れました。 OLEDの端子のピッチが狭くてハンダ付けに苦労したので、専用基板を起こしたくなりました。 |
(C) 『昼夜逆転』工作室 | [トップページへ戻る] |