M5Stackには液晶画面があるのですが、小さいので少し離れたところから見る装置等には不向きです。
現在熱帯魚水槽のpH常時測定器を作成しているので、たまたま手元にあったWinSTAR社OLEDディスプレイを
使用することにしました。(I2C変換を使ってI2C制御ですが。)
本来は8bitパラレル入力のHD44780互換なので、liquidCrystal_I2C.hで簡単に利用できる...はず
なのですが、WinSTAR社OLEDモジュールのコントローラーが__WS0010__が曲者でイニシャライズが特殊です。
初回起動時(パワーオンリセット時)は正常に動いている感じですが、m5stackをリセットした際などにinitしても上手くいきませんでした。
半日程ネットを徘徊して調べたんですが、旧式なモジュールなので情報も少なく...
ロシア人の記事が一軒見つかり、その記事によると、おかしくなったら(0x00)を4回送れとのこと。
LiquidCrystal_I2C.cpp
//put the LCD into 4 bit mode
// this is according to the hitachi HD44780 datasheet
// figure 24, pg 46
// we start in 8bit mode, try to set 4 bit mode
//write4bits(0x03 << 4);
//delayMicroseconds(4500); // wait min 4.1ms
// second try
//write4bits(0x03 << 4);
//delayMicroseconds(4500); // wait min 4.1ms
// third go!
//write4bits(0x03 << 4);
//delayMicroseconds(150);
write4bits(0x00);
delayMicroseconds(100);
write4bits(0x00);
delayMicroseconds(100);
write4bits(0x00);
delayMicroseconds(100);
write4bits(0x00);
delayMicroseconds(100);
write4bits(0x00);
delayMicroseconds(150);
と、こんな感じで正常にイニシャライズ出来たようです。
あまり需要のなさそうな情報ですが、半日かかったんでまとめておきます。