サイトロゴ

【Arduino】OLEDに文字表示【Seeeduino】

著者画像
Toshihiko Arai

この記事では、ArduinoとOLEDディスプレイを使って文字を表示する方法を解説していきます。使ったOLEDディスプレイは0.91インチと超小型のものです。通信方法はI2Cになりますが、u8g2ライブラリというものを使用すればとても簡単に文字表示が可能です。

LCDで文字表示させる場合には、 をご覧ください。

また、Raspberry PiでOLEDを使いたい場合は をご覧ください。

はじめに

OLEDとは

OLEDとは「Organic Light Emitting Diode」の略で、LEDの発光素材にオーガニック(有機物質) を使ったものです。「有機エレクトロルミネッセンス」や「有機EL」と呼ばれたりします。 通常の黒い液晶ディスプレイですと、自ら発光しないため、明るくするにはバックライトが必要でした。しかし、OLEDディスプレイであればバックライトが不要です。OLED自らが発光するので、明るく鮮明な表示ができます。私もはじめてArduinoで使ってみましたが「カッコイイ!」と思いました。笑

開発環境

項目 バージョン
Arduinoボード Seeeduino XIAO
OLEDディスプレイ DSP TECH 0.91インチディスプレイ
Arduino IDE 1.8.10
パソコン macOS Big Sur 11.0.1
ライブラリ u8g2

「DSD TECH/OLED 0.91インチディスプレイ」のマニュアルはこちら http://www.dsdtech-global.com/2018/05/iic-oled-lcd-u8glib.html

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

ArduinoでOLEDディスプレイを扱うには 「u8g2ライブラリ」 を使うと便利です。今回使用するOLEDディスプレイはI2C通信ですが、ライブラリを使えば細かい設定をせずにすぐ使うことができます。まずは、Arduino IDEに「u8g2ライブラリ」ライブラリをインストールしましょう。

Arduino IDESketchInclude Library へ進み「u8g2」で検索してu8g2ライブラリをインストールします。

ちなみにこの「u8g2」ライブラリは次のチップが使われているOLEDやLCDに対応しているそうです。

SSD1305、SSD1306、SSD1309、SSD1322、SSD1325、SSD1327、SSD1329、SSD1606、SSD1607、SH1106、SH1107、SH1108、SH1122、T6963、RA8835、LC7981、PCD8544、PCF8812、HX1230 、UC1601、UC1604、UC1608、UC1610、UC1611、UC1701、ST7565、ST7567、ST7588、ST75256、NT7534、IST3020、ST7920、LD7032、KS0108、SED1520、SBN1661、IL3820、MAX7219 etc…

使用できるすべてのデバイスリストはこちらをご確認ください。 https://github.com/olikraus/u8g2/wiki/u8g2setupcpp

OLEDディスプレイに文字を表示

それではOLEDディスプレイとArduinoをつないで「Hello world!」を表示させてみましょう。

OLEDとSeeeduino XIAOの配線

配線は次の通りです。どのArduinoにもI2C用のSCLピンとSDAピンがありますので、そちらに合わせて繋いでください。

OLED Seeeduino XIAO
GND GND
VCC 5V
SCL SCL(A5)
SDA SDA(A4)

「Hello world!」を表示させるプログラム

こちらが「Hello world!」を表示させるプログラムです。上記プログラムをArduinoにアップロードすれば、写真のように文字が表示されるはずです。

#include <U8g2lib.h>

U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

void setup(void) {
  u8g2.begin();
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_8x13_tf);
  u8g2.drawStr(0, 10, "Hello world!");
  u8g2.drawStr(0, 21, "OLED screen TEST");
  u8g2.drawStr(0, 32, "with U8g2lib");
  u8g2.sendBuffer();
}

void loop(void) {
}

U8G2_SSD1306_128X32_UNIVISION_F_HW_I2Cは、使用するOLEDの内蔵ICと画面サイズに合わせてください。今回は、内蔵ICにSSD1306が使われており、画面サイズは128x32ですので、このような記述になってます。違うOLEDディスプレイご利用する場合は、こちらのリストから選び書き換えてみてください。

https://github.com/olikraus/u8g2/wiki/u8g2setupcpp#st7920-128x64

u8g2.setFont(u8g2_font_8x13_tf) ではフォントを選ぶことができます。使用できるフォントはこちらを参考にしてみてください。 https://github.com/olikraus/u8g2/wiki/fntgrp https://github.com/olikraus/u8g2/wiki/fntlistall

関連記事