I2C対応のSSD1306 OLED 128×32ディスプレイ用のArduinoコードと動画
このチュートリアルでは、ArduinoでI2C通信を用いてSSD1306 OLED 128×32ディスプレイを使用する方法を紹介します。目的は、画面にテキストや矩形、電圧や温度といった動的な値など、さまざまな要素を表示することです。この構成は、コンパクトで効率的な表示ソリューションを必要とするプロジェクトに最適です。

必要なハードウェア部品、配線手順、そしてすべてを稼働させるためのArduinoコードを順を追って説明します。視覚的な案内として、このチュートリアルに付属する動画(動画の00:00)を必ずご確認ください。
ハードウェアの解説
プロジェクトの主要な構成要素にはSSD1306 OLEDディスプレイが含まれます。これは低消費電力で、I2C通信を使用して簡単にインターフェースできるディスプレイです。表示解像度は128×32ピクセルで、テキストや簡単なグラフィックの表示に適しています。
表示を制御するために、I2Cを介してコマンドとデータを送信するArduinoボードを使用します。Arduinoは、たとえばライブラリなどを使用して情報の表示ロジックを処理します。Adafruit_GFXそしてAdafruit_SSD1306これらのライブラリは通信処理を簡素化し、図形やテキストの描画を容易にします。
データシートの詳細
| 製造元 | Adafruit |
|---|---|
| 部品番号 | SSD1306 |
| ロジック/入出力電圧 | 3.3~5 V |
| 電源電圧 | 3.3~5V |
| 消費電流 | 約20 mA(典型値) |
| 表示解像度 | 128×32ピクセル |
| インターフェース | I2C |
| 寸法 | 128×32mm |
| 注記/バリエーション | さまざまなサイズとインターフェースでご利用いただけます |
- I2Cアドレスを確認してください。OLEDでは通常0x3Cです。
- 損傷を防ぐため、適切な電源を確保してください。
- 必要に応じてSDAおよびSCLラインにプルアップ抵抗を使用してください。
- I2C信号のノイズを減らすため、配線は短くしてください。
- 複数のモジュールに給電する場合は、放熱対策を検討してください。
配線手順

SSD1306 OLEDディスプレイを配線するには、まずディスプレイのVCCピンをArduinoの5V出力に接続します。次に、GNDピンをArduinoのグランドピンのいずれかに接続します。I2C通信では、ディスプレイのSDAピンをArduinoのSDAピン(UNOではA4)に接続し、ディスプレイのSCLピンをArduinoのSCLピン(UNOではA5)に接続します。別のArduinoモデルを使用している場合は、SDAとSCLのピン配置を確認してください。
追加の部品として、制御したいLEDがある場合は330Ωの抵抗を介してピン9に接続してください。抵抗のもう一方の端をLEDのアノードに接続し、カソードはグラウンドに接続してください。この接続により、ピン9がオンになるとLEDが点灯します。
コード例とウォークスルー
Arduinoのコードでは、まずOLEDディスプレイに必要なライブラリをインクルードします。キーとなる識別子はdisplay、これはそのインスタンスであるAdafruit_SSD1306クラス。ディスプレイはその中で初期化されますsetup()関数内で、描画の準備のためにディスプレイをクリアします。

void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
}その中でloop()関数内で文字列変数を定義します。vString電圧値を保持するためで、その値は動的に更新されます。そのrobojaxText()この関数は、指定した座標にテキストを画面上に表示するために使用されます。
void loop() {
String vString = String(count, 3);
display.clearDisplay();
robojaxText("Voltage: ", 4, 3, 1, false);
robojaxText(vString, 72, 3, 1, false);
display.display();
count += 0.173;
delay(2000);
}そのrobojaxText()この関数はテキストの位置決めと表示において重要です。テキスト文字列、x および y 座標、テキストサイズ、表示を即座に更新するかどうかを決定するブール値を引数として受け取ります。
void robojaxText(String text, int x, int y, int size, boolean d) {
display.setTextSize(size);
display.setTextColor(WHITE);
display.setCursor(x, y);
display.println(text);
if(d) {
display.display();
}
}この関数は、テキストを出力する前にテキストのサイズ、色、およびカーソル位置を設定します。コードの完全な解説はビデオを必ずご覧ください(ビデオの10:00)。
デモ/何を期待できるか
コードをArduinoにアップロードすると、OLEDディスプレイに電圧、温度、容量の値が表示され、2秒ごとに動的に更新されます。テキスト要素の周りに矩形が描かれているはずです。ディスプレイが何も表示しない場合は、配線が正しいか、I2Cアドレスがコードで指定されたものと一致しているかを確認してください。
動画のタイムスタンプ
- 00:00- プロジェクトの紹介
- 02:00- 配線手順
- 05:00- コードのウォークスルー
- 10:00- 出力のデモンストレーション
必要かもしれないもの
-
アマゾンAmazonでOLED 128x32を購入してください。amzn.to
-
アリエクスプレスAliExpressからSSD1306 OLED 128x32を購入するs.click.aliexpress.com
リソースと参考文献
-
外部Adafruit-GFXライブラリ(GitHubから)github.com
-
外部SSD1306ライブラリ(GitHubから)github.com
ファイル📁
ファイルは利用できません。