You are here

ESP8266: U8G2ライブラリによるOLEDディスプレイの利用

ESP8266-LEAFやESP8266-KEYには、I2Cで接続するOLEDディスプレイを接続できます。

ここでは、U8G2ライブラリを使用して、このOLEDディスプレイに文字表示を行う方法を示します。


ライブラリのインストール

U8G2ライブラリは、以下のURLで公開されています。

https://github.com/olikraus/u8g2

このページからライブラリをダウンロードしてArduino IDEにインストールすることもできますが、Arduino IDEのライブラリマネージャで簡単にインストールすることができます。

ライブラリマネージャを開いて、上部の検索領域にU8G2と入力すると、U8G2ライブラリの項目が絞られて表示されるので、そのライブラリをインストールします。

ライブラリマネージャでのU8G2ライブラリのインストール


マニュアル

https://github.com/olikraus/u8g2/wiki/u8x8reference

https://github.com/olikraus/u8g2/wiki/u8g2reference


文字表示に特化したU8x8libでの文字列の表示例を示します。
U8x8libでは、8X8ピクセルのフォントを使用して、128X64のディスプレイでは、16文字X8行の文字表示を行うことができます。

println(), print()メソッドを使用して文字列を表示した例を以下に示します。

println(), print()メソッドは、文字列の他に数値も指定して表示することができます。

文字を表示する前に、setFont()メソッドで使用するフォントを設定します。
フォントを設定しないと文字は表示されません。

使用できるフォントの一覧は以下のURLで確認することができます。
https://github.com/olikraus/u8g2/wiki/fntlist8x8

#include <U8x8lib.h>
#include <Wire.h>

// SSD1306をテキストディスプレイとして利用するためのコンストラクタ
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE) ;

void setup(void)
{
  u8x8.begin() ;
  u8x8.setFont(u8x8_font_artossans8_r) ; // フォントの指定
}

void loop(void)
{
  u8x8.clear();
  u8x8.println("MicroFan") ; // println()メソッドは文字列の表示後に改行する
  u8x8.println("ESP8266-LEAF\n") ;
  u8x8.print("OLED") ; // print()メソッドは改行しないので文字列を継続表示できる
  u8x8.print(" 128x64\n") ; // print()メソッドで改行したい場合には\nを指定する
  u8x8.println(millis()) ; // 整数値の表示
  u8x8.println(123.45) ; // 実数値の表示

  delay(1000);
}

U8X8ライブラリのprint()メソッドでの表示例


drawString()メソッドを使用して文字列を表示した例を以下に示します。

drawString()の第1第2引数で、文字列を表示を開始する位置(ピクセル単位ではなく文字単位)を指定します。

drawString()は文字列しか表示できないため、数値は文字列に変換して指定する必要があります。

#include <U8x8lib.h>
#include <Wire.h>

// SSD1306をテキストディスプレイとして利用するためのコンストラクタ
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE) ;

void setup(void)
{
  u8x8.begin() ;
  u8x8.setFont(u8x8_font_artossans8_r) ; // フォントの指定
}

void loop(void)
{
  u8x8.clear();
  u8x8.drawString(0,1, "MicroFan");
  u8x8.drawString(0,2, "ESP8266-LEAF");
  u8x8.drawString(0,4, "OLED 128x64");
  u8x8.drawString(0,5, String(millis()).c_str()); // 整数値の表示
  u8x8.drawString(0,6, String(123.45).c_str()); // 実数値の表示

  delay(1000);
}

使用パーツ


開発ソフト: 
チップファミリー: