Seeeduino XIAO | OLED で Hello World

Seeeduino XIAOのスペックやArduino IDEの環境設定はこちら
スポンサーリンク

ArduinoでOLEDに「Hello World」を表示する

秋月電子で580円で購入した0.96インチ (128×64) 有機ELディスプレイを使います。
このOLEDのインターフェースはI2Cです。

I2CインターフェースのOLEDはAmazon等でも購入できます

ハードウェアの接続

0.96インチOLED SSD1306

OLEDの裏面を見るとI2Cアドレスが0x78と0x7Aを選択できるようになっています。
(抵抗を載せ替えることによってI2Cアドレスを変更できます。)

今回はデフォルトの0x78のまま使います。

Arduino IDE の I2Cアドレスの表記に注意

I2Cアドレスの “0x78” は8ビット表記ですが
Arduino IDEで記述するときは7ビット表記の “0x3C” にします。

Arduino IDE上の記述で省略している、
I2Cアドレスの最後の1ビットは Read or Write を示します。
Arduinoの関数名でRead/Writeは指定しているので不要なのですね。

ふつう、I2Cの信号線にはプルアップ抵抗が必要ですが
このOLEDは基板上にすでにプルアップ抵抗がマウントされているので
外付けで抵抗を追加する必要はありません。

動作電圧は3.3V~5Vなので、3.3Vで動かしてみることにします。

Seeeduino xiaoとOLEDの接続

接続するとこんな感じ。
3.3V, GND, SCL, SDAの4本だけを接続すればOKです。

Arduino IDEにOLEDのライブラリをインストールする

Arduinoで使えるOLEDのライブラリは複数ありますが、
ACROBOTIC SSD1306」を使ってみます。( ← 個人的にフォントが好き)

インストールは スケッチ > ライブラリをインクルード >ライブラリの管理 から
ライブラリマネージャを開き、「OLED」などで検索すると出てきます。

Arduino IDE Library Manager

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

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

Arduino IDE Sketch sample

ライブラリのインクルードが完了すると上写真のようにスケッチ例が追加されます。

試しに「DrawLogo」を実行してみます。
XiaoをPCにつないで ツール > ボード を”Seeeduino XIAO”に、
ツール > シリアルポート をXiaoをつないだCOM番号に設定します。

ACROBOTIC SSD1306 スケッチ例

スケッチ > マイコンボードに書き込む を選択すると
コンパイルが実行されて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アドレスを変更したい場合はこのヘッダーファイルを書き換えます。

実行してみる

Seeeduino xiaoとOLEDでHello world

「Hello World」が表示されました!

コメント

タイトルとURLをコピーしました