エビデイエビナイ電子工作

やったことの記録

aitendoの超小型OLEDを使ってみる #1

f:id:Rappy:20190215165246j:plain

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に接続しておきます。


f:id:Rappy:20190215230738p:plain
回路図(電源は省略)


通信フォーマット

f:id:Rappy:20190215172614p:plain
SSD1306の通信フォーマット

OLEDモジュールの制御IC SSD1306データシートを見ると、I2Cで通信を行う際のデータフォーマットは上図のようになっています。

はじめにスレーブアドレスとR/Wビットを送信します。ACKが返ってきたらコントロールバイト、データバイトの順に送信します。

コントロールバイトの Coビットは、0に設定すると次に送信するバイト以降をすべてデータバイトとして解釈しますが、1に設定すると、コントロールバイトの次の1バイトのみ、データバイトとして解釈します。

D/C#ビットは、制御コマンドを送る際は0、データを送る際は1に設定します。


初期設定を行う

f:id:Rappy:20190215172908p:plain
初期設定の流れ

OLEDを使うには初めに幾つかの設定を行う必要があります。

図のような流れで初期設定を行いますが、このモジュールはチャージポンプの設定と表示ONのみ設定すれば画面が表示されるようです。


f:id:Rappy:20190215201952p:plain f:id:Rappy:20190215204755p:plain

データシートの表によると、チャージポンプ設定は0x8D、チャージポンプ有効は0x14、表示ONは0xAFのコマンドを送信すればよさそうです。


表示させてみる

以上のことから、最低限画面を表示するには、0x00 0x8D 0x14 0xAFの順でコマンドを送信すれば良いことになります。


f:id:Rappy:20190215213213j:plain
画面が点灯し、ノイズが表示された

通信開始用のスイッチを押すと、画面が点灯し、ノイズが表示されました。 これは、画像データRAMの初期化を行っていないためです。

次回は画像データRAMを初期化し、画面をクリアするところから初めてみようと思います。


参考


https://twitter.com/__Rappy__twitter.com