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

この記事では、ArduinoとOLEDディスプレイを使って文字を表示する方法を解説していきます。使ったOLEDディスプレイは0.91インチと超小型のものです。通信方法はI2Cになりますが、u8g2ライブラリというものを使用すればとても簡単に文字表示が可能です。
また、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 IDE
→ Sketch
→
Include 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_R0, /* reset=*/ U8X8_PIN_NONE);
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2
void setup(void) {
.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();
u8g2}
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
関連記事
- Raspberry PiでOLEDに文字表示
- ArduinoでLCDに文字表示
- Arduino Unoのシールド基板で、アナログセンサのデバッガーを作ってみた
- ESP32でST7735 TFT LCD液晶ディスプレイを使ってみる
- ESP32でjson11を使ってJSONを簡単に扱う方法|JSON文字列のパース|配列をJSONに変換