【Arduino】OLEDに文字表示【Seeeduino】
この記事では、ArduinoとOLEDディスプレイを使って文字を表示する方法を解説していきます。使ったOLEDディスプレイは0.91インチと超小型のものです。通信方法はI2Cになりますが、u8g2ライブラリというものを使用すればとても簡単に文字表示が可能です。
LCDで文字表示させる場合には、 ArduinoでLCDに文字表示 をご覧ください。
また、Raspberry PiでOLEDを使いたい場合は Raspberry PiでOLEDに文字表示 をご覧ください。
はじめに
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 IDE | 1.8.10 |
パソコン | macOS Big Sur 11.0.1 |
ライブラリ | u8g2 |
「DSD TECH/OLED 0.91インチディスプレイ」のマニュアルはこちら DSD TECH Official Website: DSD TECH
Arduinoボードは「Seeeduino XIAO」を使用しましたが、お好みのArduinoボードで構いません。どのArduinoでも、この記事の内容で動作します。
Seeeduino XIAOのセットアップ方法はこちらを参考に
u8g2ライブラリのインストール
ArduinoでOLEDディスプレイを扱うには 「u8g2ライブラリ」 を使うと便利です。今回使用するOLEDディスプレイはI2C通信ですが、ライブラリを使えば細かい設定をせずにすぐ使うことができます。まずは、Arduino IDEに「u8g2ライブラリ」ライブラリをインストールしましょう。
Arduino IDE → Sketch → Include Library へ進み「u8g2」で検索してu8g2ライブラリをインストールします。ちなみにこの「u8g2」ライブラリは次のチップが使われているOLEDやLCDに対応しているそうです。
使用できるすべてのデバイスリストはこちらをご確認ください。 u8g2 setup cpp·olikraus/u8g2Wiki·GitHub
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 setup cpp·olikraus/u8g2 Wiki·GitHub
u8g2.setFont(u8g2_font_8x13_tf) ではフォントを選ぶことができます。使用できるフォントはこちらを参考にしてみてください。 fntgrp·olikraus/u8g2 Wiki·GitHub fntlistall · olikraus/u8g2 Wiki · GitHubまた、こちらの記事では超音波センサを使って距離を逐次表示してみました。