aitendoの超小型OLEDを使ってみる #1
aitendoでOLED(有機EL)モジュールを購入しました。
http://www.aitendo.com/product/14959www.aitendo.com
M096P4(BL)は画面サイズわずか0.96インチ、基盤寸法は29x27mmという超小型OLEDモジュールです。 高輝度、高視野角で、I2Cで通信を行うため小ピンマイコンでも制御が可能です。
今回はこれを、手元にあったATmega88で制御してみます。
マイコンに接続する
OLEDモジュールとマイコンに3.3Vの電源を接続し、それぞれのSCL, SDAピン同士を繋ぎます。 SCL, SDAは共に10kΩでプルアップしておきます。 また、通信開始用のタクトスイッチもPB0に接続しておきます。
通信フォーマット
OLEDモジュールの制御IC SSD1306のデータシートを見ると、I2Cで通信を行う際のデータフォーマットは上図のようになっています。
はじめにスレーブアドレスとR/Wビットを送信します。ACKが返ってきたらコントロールバイト、データバイトの順に送信します。
コントロールバイトの Coビットは、0に設定すると次に送信するバイト以降をすべてデータバイトとして解釈しますが、1に設定すると、コントロールバイトの次の1バイトのみ、データバイトとして解釈します。
D/C#ビットは、制御コマンドを送る際は0、データを送る際は1に設定します。
初期設定を行う
OLEDを使うには初めに幾つかの設定を行う必要があります。
図のような流れで初期設定を行いますが、このモジュールはチャージポンプの設定と表示ONのみ設定すれば画面が表示されるようです。
データシートの表によると、チャージポンプ設定は0x8D
、チャージポンプ有効は0x14
、表示ONは0xAF
のコマンドを送信すればよさそうです。
表示させてみる
以上のことから、最低限画面を表示するには、0x00
0x8D
0x14
0xAF
の順でコマンドを送信すれば良いことになります。
通信開始用のスイッチを押すと、画面が点灯し、ノイズが表示されました。 これは、画像データRAMの初期化を行っていないためです。
次回は画像データRAMを初期化し、画面をクリアするところから初めてみようと思います。