ArduinoでOLEDに「Hello World」を表示する
秋月電子で580円で購入した0.96インチ (128×64) 有機ELディスプレイを使います。
このOLEDのインターフェースはI2Cです。
ハードウェアの接続

OLEDの裏面を見るとI2Cアドレスが0x78と0x7Aを選択できるようになっています。
(抵抗を載せ替えることによってI2Cアドレスを変更できます。)
今回はデフォルトの0x78のまま使います。
I2Cアドレスの “0x78” は8ビット表記ですが
Arduino IDEで記述するときは7ビット表記の “0x3C” にします。

Arduino IDE上の記述で省略している、
I2Cアドレスの最後の1ビットは Read or Write を示します。
Arduinoの関数名でRead/Writeは指定しているので不要なのですね。
ふつう、I2Cの信号線にはプルアップ抵抗が必要ですが
このOLEDは基板上にすでにプルアップ抵抗がマウントされているので
外付けで抵抗を追加する必要はありません。
動作電圧は3.3V~5Vなので、3.3Vで動かしてみることにします。

接続するとこんな感じ。
3.3V, GND, SCL, SDAの4本だけを接続すればOKです。
Arduino IDEにOLEDのライブラリをインストールする
Arduinoで使えるOLEDのライブラリは複数ありますが、
「ACROBOTIC SSD1306」を使ってみます。( ← 個人的にフォントが好き)
インストールは スケッチ > ライブラリをインクルード >ライブラリの管理 から
ライブラリマネージャを開き、「OLED」などで検索すると出てきます。

任意の絵などを描写したいときは自分でコーディングする必要がありますが、
文字を表示するだけならライブラリを使うと簡単にできます。

ライブラリが豊富なことがArduinoの魅力

ライブラリのインクルードが完了すると上写真のようにスケッチ例が追加されます。
試しに「DrawLogo」を実行してみます。
XiaoをPCにつないで ツール > ボード を”Seeeduino XIAO”に、
ツール > シリアルポート をXiaoをつないだCOM番号に設定します。

スケッチ > マイコンボードに書き込む を選択すると
コンパイルが実行されてXiaoにプログラムが書き込まれます。
ロボットのようなロゴが表示されました。
ライブラリによって使い勝手やフォントが異なるので
複数のライブラリを試してみるのもいいかもしれません。
ライブラリを使ってソフトウェアをつくる
プログラムを書いていきます。
「ACROBOTIC SSD1306」のざっくりとした使い方は以下です。
oled.init() | OLEDを初期化する(void setup()中に1回だけ記述します) |
oled.clearDisplay() | OLEDの表示を消去します |
oled.setTextXY() | テキストの表示開始位置をXY座標で指定します |
oled.putString | 設定されている開始位置から指定した文字列を表示します |
同じ位置に違う文字列を表示させたいときは
oled.clearDisplay()で今の表示を消してから新しい文字列を表示させます。
(でないと重ね書きになってしまうので注意)
コード全文はこちら。
#include <Wire.h>
#include <ACROBOTIC_SSD1306.h>
void setup()
{
Wire.begin();
oled.init(); // Initialze SSD1306 OLED display
oled.clearDisplay(); // Clear screen
oled.setTextXY(3,3); // Set cursor position, start of line 0
oled.putString("Hello, World");
}
座標(3, 3)から「Hello World」を表示するコードです。
I2Cを使用するために<Wire.h>のインクルードとsetup()内でのWire.begin()が必要です。
今回使うライブラリ<ACROBOTIC_SSD1306.h>もインクルードします。
冒頭でI2Cアドレスについて触れましたが
このライブラリは「ACROBOTIC_SSD1306.h」内にアドレス “0x3C” がすでに記載されています。
I2Cアドレスを変更したい場合はこのヘッダーファイルを書き換えます。
実行してみる

「Hello World」が表示されました!
コメント