どうも、エピックです。
この記事ではArduinoで0.96 inch OLED ディスプレイを点灯させる方法について紹介します。
大まかな手順を確認する
今回の次の手順で実施しました。
- 部品を調達する
- ライブラリを導入する
- 組み立てる
- I2Cアドレスを確認する
- コードを書く
- 動作確認
順番に紹介していきます。
部品を調達する
今回は次の部品を準備しました。
- Arduino Uno R3
- ブレッドボード
- ジャンパワイヤ(オス-オス)4本
- 0.96 inch OLED(I2C)
少し割高ではありますが、Arduinoの周りはこちらのスターターセットで全て揃います。
肝心のディスプレイはこちらを購入しました。
見ているとディスプレイもいっぱい種類がありますね。
ライブラリを導入する
コードを書いていく前にまずは Arduino IDE で使う追加のライブラリをインストールします。
インストールするライブラリは次の2つ。
- Adafruit_GFX_Library
- Adafruit_SSD1306
ライブラリのインストールは上部のメニューから、もしくは左のメニューから行うことができます。
検索をすると色々な関連したライブラリが表示されますのでインストールする際はしっかり確認してください。
組み立てる
部品を組み立てていきます。
回路はこんな感じで同じピン同士を繋ぎます。
VCCは、5Vではなく3.5Vに繋いでください。
組み上げた状態はこんな感じ。
I2Cアドレスを確認する
I2CのアドレスはIDEの上部メニュー、[File] – [Examples] – [Wire] – [i2c_scanner] で開くことができるサンプルコードを使用する事で確認することができます。
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for Serial Monitor
Serial.println("\nI2C Scanner");
}
void loop() {
int nDevices = 0;
Serial.println("Scanning...");
for (byte address = 1; address < 127; ++address) {
// The i2c_scanner uses the return value of
// the Wire.endTransmission to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
byte error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address < 16) {
Serial.print("0");
}
Serial.print(address, HEX);
Serial.println(" !");
++nDevices;
} else if (error == 4) {
Serial.print("Unknown error at address 0x");
if (address < 16) {
Serial.print("0");
}
Serial.println(address, HEX);
}
}
if (nDevices == 0) {
Serial.println("No I2C devices found\n");
} else {
Serial.println("done\n");
}
delay(5000); // Wait 5 seconds for next scan
}
Arduinoへ接続しこちらを実行するとコンソール上へアドレスが表示されます。
私の環境ではこんな感じで表示されました。
アドレスは、0x3Cみたいです。
Arduinoのコードを書く
Arduino IDE を使ってプログラムしていきます。
まだインストールしていないという方はこちらからソフトウェアダウンロードできます。
HelloWordと簡単な表示をするコードですが次のよう書いていきます。
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
// ここにI2Cアドレスを設定
display.begin(SSD1306_SWITCHCAPVCC,0x3C);
display.setTextColor(WHITE);
display.setTextSize(4);
display.clearDisplay();
display.clearDisplay();
}
void loop() {
display.clearDisplay(); //画面クリア
display.setCursor(0,0); //左上にカーソルを移動
display.println("Hello"); //文字列挿入
display.display(); //描画バッファの内容を画面に表示
delay(1000); //1秒間待ち
display.clearDisplay();
display.setCursor(0,32); //下段にカーソルを移動(64/2=16)
display.println("World");
display.display();
delay(1000);
}
実行すると次のように「Hello World」と順番に表示されると思います。
もう少しおしゃれなものを見たいという方は、こちらもサンプルコードが用意されているので試すと良いです。
IDEの上部メニュー、[File] – [Examples] – [Adafruit SSD1306] – [ssd1306_128x64_i2c] を選択することでサンプルコードが利用できます。
こちらもコード上のアドレスを変更する必要がある点は注意です。
最後に
今回はArduinoで0.96 inch OLED ディスプレイを点灯させる方法んいついて書いてみました。もしわからないこと等あればコメントにていただけれればと思います。
今回も最後までお読みいただきありがとうございました。
では。