趣味のマイコンいじり

安価なマイコンを利用して作成したアプリの紹介です。

0.96インチOLEDディスプレイを動かして見ました

グラフィック表示可能なものとして小さいけど割と安価のものが有ったので
例によって中国から購入して動かして見ました。結果としては、表示画面は
小さいのですが、それなりに利用できる事が判りました。

<OLED SSD1306ディスプレイ の概要>
  購入した「OLED SSD1306ディスプレイ」は「Arduino UNO」対応のもので、
  次の様なものでした。
  イメージ 1

  1.画素数 128x64ドットの有機LEDディスプレイ
  2.白色の発光色(青色の製品も有り)
  3.標準インターフェイス 4線式SPIシリアル
         (改造により I2C も可能)
  4.ドライバICは SSD1306

<関連資料>
  ボードの資料としては次のものが参考となります。
   URL : http://electronics.stackexchange.com/questions/164680/ssd1306-display-spi-connection-or-i2c-according-to-resistors/269790

  ドライバのチップ(SSD1306)のデータシートは次のURLから入手可能です
       URL : https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf

<テスト内容>
   OLEDディスプレイのテストは次の様な内容で、公開されているデモ用の
     プログラム(2種類)の動作をさせる事にしました。

 [目的と結果]
    テストの確認目標は次のものでした。
    1.次の2種類のライブラリを利用したものの動作方法の確認
              ・Arduino のライブラリ管理からインストールできる「U8g2」 を
                 利用したもの
              ・Web上で公開されている「Adafruit_SSD1306」を利用したもの
    2.および、それが動作する事を確認
    3.それぞれのプログラムが消費するメモリ容量の確認

   結果としては、それぞれのサンプルプログラム共良好に動作し、期待した
       結果が得られました。なお、メモリの消費量は各々次の様な値で、
       動作内容の違いがあるので端的には結論づけられませんが、
     「Adafruit_SSD1306」を使ったものの方が少し有利の様です。
     (U8g2のものでは、メモリショートの警告が出る。)

          ・U8g2 : flash memory 21564/32256, ram 1661/2048
          ・Adafruit_SSD1306 :  flash memory 17080/32256, ram 1515/2048

 [テストでの機器の接続] 
    イメージ 2

    イメージ 3

 [U8g2のライブラリとサンプルスケッチ]
   まずU8g2をインストール 
    イメージ 4

    次にテストコードをオープン
    イメージ 5

    最後にテストコードから目標のラインを選択
    イメージ 6

  1.ライブラリの管理からライブラリーマネージャを開き U8g2をインストール
  2.次に、U8g2のサンプルコードから GraphicsTest を選択
  3.オープンしたサンプルコードから目的のものを選択して有効化
         (先頭の // を消去)

 [Adafruit_SSD1306のライブラリとサンプルスケッチ]
   次の2つのライブラリをダウンロードしてArduinoのライブラリフォルダに置く
         1.Adafruit_SSD1306
              URL : https://github.com/adafruit/Adafruit_SSD1306
         2.Adafruit-GFX
              URL : https://github.com/adafruit/Adafruit-GFX-Library

    サンプルスケッチは exsamples\ssd1306_128x64_spi のものを使用
     ただし、ポートの割り付けはU8g2のGraphicTestにに合わせて、
     ライブラリの「Adafruit_SSD1306.h」は元のものは32ラインのものに
     設定して有るので64ラインの方に切り替える。
   (73行目を有効化し、74行目をコメントにする。) 

     イメージ 7

    イメージ 8


  [動作状況]
    <U8g2のサンプル>
      

    <Adafruit_SSD1306のサンプル>
      

<I2C動作への改造>
  4線式SPIが標準で実装されていますが、3線式SPIおよび
   I2Cインターフェイスへの対応が改造により可能となっている様です。
   I2Cへの対応に関してはこちらでも確認し、結果としては次の様に
   なりました。(動作速度はかなり遅くなりました。)

 [ハードの改造]
   基板裏に書いてあるコメントに従って次の様に変更します。
   イメージ 9

 [接続] 
     OLEDboad            Arduino UNO
         GND                   Gnd
         VCC                    5v
         D0                      A5 (SCL)
         D1                      A4 (SDA)
         RES                    RST
         DC                      Gnd
         CS                      x (no connection)


 [ソフトの変更]
   U8g2のサンプルに関しては、I2Cの項目を有効にすれば、そのまま
    使え、変更は必要有りませんが、Adafruit_SSD1306用のものは
    exsamplesに有る「ssd1306_128x64_i2c」のI2Cのアドレスの値が
    異なっており、修正(0x3D -> 0x3C)する必要が有ります。
    イメージ 10