基本的に、頭の中はPIC24FJ64GB002でPCD8544を扱った時(「PIC24FJ64GB002 + MCC + Nokia 5110 Graphic LCD (PCD8544) – グラフィック表示の方法 –」)の認識になっている。
SSD1306のデータシートを斜めに読むと、ほぼ同じ要領でデータを書けばいいと思われる。
「ほぼ」というのは、いろんなモードがあるらしいからだ。
PCD8544でもそうだったのかもしれないが、読んでないか忘れた。
SSD1306の場合は、どうやら以下の4つの書き方があるようだ。
フォントでも自分の把握しているデータ形式の物ならグラフィックと同じ扱いで表示できる。
ところが、Adafruitのライブラリに含まれるフォントは様子が違って、ドットが乱れてちゃんと表示できなかった。
画像データをAdafruitのライブラリに含まれるフォント・データに変換してくれるサイトを見つけたので、いろいろ試してみる。
まずは、こういう8×8のデータを作ってビットマップ・データを作成してみた。
0x01, 0x70, 0x7c, 0x7c, 0x7c, 0x61, 0x03, 0x1f
このデータをドットに直して横に並べてみるとこうなる。
つまり、元データを横にスライスしてデータに直してるわけだ。
今度は、右と下を2ビットずつ広げてこういう画像にする。
これを同様にコンバートして、やはり横に並べるとこうなる。
0x01, 0xdc, 0x37, 0xcd, 0xf3, 0x7c, 0xd8, 0x70, 0x3c, 0x7f, 0xff, 0xff, 0xff
元の画像との関連が全く分からないほどグチャグチャになっているように見える。
どうやら、半端な分を次々と8ビットに詰め込んでつなげているらしい。
何でこんな面倒な事してるのか分からないが、メモリの節約にはなるんだろう。
1.元の画像を横にスライスする。
2.それをつなげて一列に並べる。
3.端から8ビットずつにカットして1バイトとする。
という手順だと思えば分かりやすいか。