酒と薔薇の日々(その2)

好きなことだけ求めて生きるアスペ気味のINTJ人

SPI OLED 0.96インチ モジュール実験 [SSD1306](3/3)「U8g2」ライブラリ編

2022年07月05日 17時15分15秒 | マイコン(ESP32・Arduino等)

ハードウエアSPIでも試してみた。

「U8g2」ライブラリをインスコするのだが、

2個ヒットしたので「U8g2_for_Adafruit_GFX」の方をインスコ
こちらのほうが特化してるので良さげに思えた。
Pinアサインがそのまま使える。

サンプルの「Hllo_Adafruit_SSD1306」を読み込んだ。
元ソースのピンアサインが以下のようになってる。
Adafruit_SSD1306 display(/*MOSI*/ 11, /*CLK*/ 13, /*DC*/ 9, /*RESET*/ 8, /*CS*/ 10);
今までは
#define OLED_MOSI   9 #define OLED_CLK   10 #define OLED_DC    11 #define OLED_CS    12
だったので、
Adafruit_SSD1306 display(/*MOSI*/ 9, /*CLK*/ 10, /*DC*/ 11, /*RESET*/ -1, /*CS*/ 12);
に変更してみた。

結局同じ不具合症状が出た。
表示位置とか変だしフォントサイズがデカくて(1指定でも4サイズ)、どのみち使えそうにない。

-----------------

続いてオリジナルの「U8g2」ライブラリをインスコ

u8g2→full_buffer→HelloWorldのサンプルを読み込む。
61行目に在る
//U8G2_SSD1306_128X64_NONAME_F_4W_HW_SPI u8g2
を探してコメント//を外す。
後のハードウエアは定義は削除(動かしたソースはブログ最後尾)

VCC・GND、CLK = 13、MOSI= 11、CS = 10、D/C = 9 に結線し直し。

が、一回おきに表示が上下に分断されたり、表示位置が移動する、
妙なドットが表示されるなど不具合あり。

ロゴ表示もできた。が、数回の表示でめちゃくちゃに崩れた。(写真載せるのもめんどい)

やはりハード故障なんだろう。
もしかすると微妙に上下に移動したり表示が分断されるのは、黄色と青色の境目にOLEDが実装されていないせいかも。

・「U8g2」やってよかったこと
 U8g2はメモリ使用量が26%とAdafruit_SSD1306の約半分だった
 文字表示+線だけならこのライブラリが正解です。
 フォントも綺麗でプロポーショナルな点は良い。
 サンプルのBitmap画像も表示できました。
 忍耐という修練が進んだこと。

結線
① VCC    -> 3.3/5V
② GND   -> GND
③ CLK    -> 10 pin
④ MOSI  -> 9 pin
⑤ CS       -> 12 pin
⑥ D/C     -> 11 pin

--------------------
#include "Arduino.h"
#include "U8g2lib.h"
#include "SPI.h"

U8G2_SSD1306_128X64_NONAME_F_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);

void setup(void) {
  u8g2.begin();
}

void loop(void) {
  u8g2.clearBuffer();  // clear the internal memory
  u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font
  u8g2.drawStr(0,30,"Hello World!"); // write something to the internal memory
  u8g2.sendBuffer();  // transfer internal memory to the display
  delay(1000);  
}

この記事についてブログを書く
« SPI OLED 0.96インチ モジュ... | トップ | リアルタイムクロック[ DS130... »