ArduinoでOLED

 

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

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

はじめに

OLEDとは

OLEDとは「Organic Light Emitting Diode」の略で、LEDの発光素材にオーガニック(有機物質)を使ったものです。「有機エレクトロルミネッセンス」や「有機EL」と呼ばれたりします。

通常の黒い液晶ディスプレイですと、自ら発光しないため、明るくするにはバックライトが必要でした。しかし、OLEDディスプレイであればバックライトが不要です。OLED自らが発光するので、明るく鮮明な表示ができます。私もはじめてArduinoで使ってみましたが「カッコイイ!」と思いました。笑

OLEDによるディスプレイは液晶と比べて実用化が遅かったため高価です。それでも、だいぶ価格は下がっているようで、安くて手に入りやすいです。ちなみに、今回はこちらのOLEDディスプレイを使用しました。解像度は128x32で、ドライバICはSSD1306が使われています。電源は3.3V〜5Vの範囲で使用できます。

▼ 他にもいろいろなサイズがあります!

開発環境

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

購入したDSD TECHのOLED 0.91インチディスプレイ
購入したDSD TECHのOLED 0.91インチディスプレイ

「DSD TECH/OLED 0.91インチディスプレイ」のマニュアルはこちら

Arduinoボードは「Seeeduino XIAO」を使用しましたが、お好みのArduinoボードで構いません。どのArduinoでも、この記事の内容で動作すると思います。

Seeeduino XIAOのセットアップ方法はこちらを参考に

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

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

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

Arduino IDE ライブラリマネージャを開いてu8g2で検索する
Arduino IDE ライブラリマネージャを開いて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...

使用できるすべてのデバイスリストはこちらをご確認ください。

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

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

OLEDとSeeeduino XIAOの配線

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

OLEDとSeeeduino XIAOの配線図
OLEDとSeeeduino XIAOの配線図

OLEDSeeeduino XIAO
GNDGND
VCC5V
SCLSCL(A5)
SDASDA(A4)

Seeeduino XIAOのGPIO
Seeeduino XIAOのGPIO

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

Arduinoを使ってOLEDディスプレイに文字が表示
Arduinoを使ってOLEDディスプレイに文字が表示

こちらが「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ディスプレイご利用する場合は、こちらのリストから選び書き換えてみてください。

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

また、こちらの記事では超音波センサーを使って距離を逐次表示してみました。もう少し実践的な文字表示をしたい場合に、ご参考になさってみてください。

記事に関するご質問などがあればTwitterへお返事ください。
この記事で紹介した商品
人気のArduino互換機
Arduinoで人気の周辺パーツ
Arduinoのオススメ参考書

▼ Arduino初心者向きの内容となっています。ほかのArduino書籍と比べて図や説明がとてもていねいで、読みやすかったです。Arduinoで一通りのセンサーが扱えるようになります。

▼ 外国人が書いた本を翻訳したものです。この手の書籍は、目からうろこな発見をすることが多いです。

▼ Arduinoの入門書を既に読んでいる方で、次のステップを目指したい人向きの本です。C言語のプログラミングの内容が中心です。ESP32だけでなく、ふつうのArduinoにも役立つ内容でした。

関連記事