今回のOLED版で変更したところを主に説明していきます。
まずは、起動ロゴですが、このOLEDのドライバで、画像を表示するときは、「xbm」という形式で、ソースコードに取り込む必要があります。画像を直接変換できると簡単なのですが、適切なコンバータを見つけることができなかったので、最終的にはリンク先のようなxbmエディタのページで、ドットをぽちぽち打ちながら、データを作成しました。(なので、いまいちかっこよくない。)
起動ロゴのほかに、水温を表示のところもドット絵を作成して、組み込んでいます。
作成した水温計データは、HEX形式なので下記のように定義されています。
#define WT_Logo_width 24
#define WT_Logo_height 24
const unsigned char WT_logo [] = {
0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,
0x00,0xf8,0x01,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,
0x00,0xf8,0x01,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,
0x00,0xf8,0x01,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x24,0x00,
0x32,0x42,0x4c,0xcc,0x42,0x33,0x00,0x24,0x00,0x00,0x18,0x00,
0x98,0xc3,0x19,0x60,0x3c,0x06,0x00,0x00,0x00,0x00,0x00,0x00};
この定義されたデータを、下部の「DisplayOut()」という関数にある、下の行でX座標0、Y座標3の位置から描いています。
display.drawXbm(0, 3, WT_Logo_width, WT_Logo_height, WT_logo);
ロゴの表示は、起動時のみ2秒間表示するようにしました。
あとは、画面表示のところ以外大きく変えていないのですが、CANの送受信に使っていたピンが、OLED接続用のI2C通信に使われているので、干渉を避けるために15番ピンと、14番ピンに変更されてますので、CANドライバへ渡すピン情報も下記のように変わっています。(注:当初12番と14番と書いてましたが、不具合対応のため、15番と14番に変更しました。
CAN_cfg.tx_pin_id = GPIO_NUM_15;
CAN_cfg.rx_pin_id = GPIO_NUM_14;