SSD1306 OLED 128 x 64 ディスプレイ用のArduinoコードと動画

SSD1306 OLED 128 x 64 ディスプレイ用のArduinoコードと動画

このチュートリアルでは、ArduinoでSSD1306 OLED 128 x 64ディスプレイを使う方法を解説します。SSD1306は多用途のディスプレイで、テキストやグラフィック、さまざまな図形を簡単に表示できます。この記事の終わりには、ディスプレイをセットアップして、その機能を実演するコードを実行できるようになります。

SSD1306 OLED displaying text

必要なハードウェア接続についてご案内し、プログラムで使用される主要な識別子を理解するのに役立つコードスニペットを提供します。より視覚的な説明については、関連ビデオ(00:00)を必ずご覧ください。

ハードウェアの解説

このプロジェクトの主な構成要素はArduinoボードとSSD1306 OLEDディスプレイモジュールです。SSD1306ディスプレイはI2C通信プロトコルを利用しており、データ用のSDAとクロック信号用のSCLという2本のラインだけで配線が簡素化されます。ディスプレイは3.3V〜5Vの電圧で動作するため、ほとんどのArduinoボードと互換性があります。

ディスプレイに加えて、モジュールをArduinoに接続するためのジャンパーワイヤーが必要です。接続はVCCを電源へ、GNDをグランドへ、SDAをArduinoのデータピンへ、SCLをクロックピンへつなぎます。この構成により、ArduinoとOLEDディスプレイ間で簡単に通信できます。

データシートの詳細

製造元エイダフルーツ
部品番号SSD1306
ロジック/入出力電圧3.3 V〜5 V
電源電圧3.3V〜5V
表示解像度128 x 64 ピクセル
I2Cアドレス0x3C
インターフェースI2C
パッケージモジュール

  • 配線を正しく接続してください:VCC を 3.3V または 5V に、GND をグラウンドに、SDA を A4 に、SCL を A5 に(Arduino Uno の場合)。
  • ディスプレイは、SDAおよびSCLラインにプルアップ抵抗が必要です(既に含まれていない場合)。
  • コード内でI2Cアドレスが正しく設定されていることを確認してください。通常、このディスプレイは0x3Cです。
  • 簡単に統合できるように、Adafruit_SSD1306のような適切なライブラリを使用してください。
  • 重なりによるアーティファクトを避けるため、新しいグラフィックを描画する前にディスプレイをクリアしてください。

配線手順

Arduino wiring for SSD1306 OLED
Arduino wiring for SSD1306 OLED

SSD1306 OLEDディスプレイをArduinoに配線するには、次の手順に従ってください:

OLEDディスプレイのVCCピンをArduinoの5V(または3.3V)ピンに接続します。次に、ディスプレイのGNDピンをArduinoのグランドピンに接続します。I2C通信のために、ディスプレイのSDAピンをArduinoのA4ピンに、SCLピンをA5ピンに接続します。この接続により、ArduinoはI2Cプロトコルを使ってOLEDディスプレイと通信できるようになります。

すべての接続が確実であることを確認し、特定のディスプレイモデルに対して正しい電圧を使用しているかを再度確認してください。別のArduinoモデルを使用している場合、SDAおよびSCLのピン位置は異なることがあります(例:Arduino MegaではSDAがピン20、SCLがピン21です)。

コード例と解説

コード内では、ディスプレイを初期化し、I2Cアドレスや表示サイズなどのパラメータを設定します。重要な識別子の一つはdisplay, これはSSD1306ディスプレイのインスタンスを表します。以下はsetup関数からのスニペットです:

void setup() {                
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C
}

このスニペットでは、display.beginこの関数は指定されたI2Cアドレスでディスプレイを初期化します。適切な通信を確保するために、アドレスをディスプレイと一致させることが不可欠です。

次に、loop 関数では、それを使用しますdisplay.clearDisplay()新しいコンテンツを描画する前に画面をクリアするためのメソッドです。テキストのサイズと位置は、次の方法を使って設定できますsetTextSizeそしてsetCursor方法:

void loop() {
  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(2,1); // set cursor at top left corner
  display.println("Robojax"); // display text
}

ここでは、テキスト「Robojax」が画面上の座標(2,1)に表示されています。これにより、OLEDディスプレイ上でテキストを正確に配置できます。

最後に、変更をディスプレイに反映するために呼び出します。display.display(). この関数は、バッファ内のすべてのコマンドをディスプレイに送信して内容を更新します:

display.display();

これは、すべての描画コマンドが実行されるように、ループ関数の最後の行にする必要があります。これを忘れると、ディスプレイには何も表示されません。

参考のため、完全なコードは記事の下にあります。

デモンストレーション/期待できること

コードをArduinoにアップロードした後、OLED画面に「Robojax」という文字が表示されるはずです。コードはまた、スクロールするテキストや線、図形、その他のグラフィックをディスプレイに描画する方法も示しています。配線の誤りやI2Cアドレスの不一致など、ディスプレイが正しく動作しない一般的な落とし穴に注意してください(ビデオでは10:00)。

動画のタイムスタンプ

  • 00:00- SSD1306 OLEDディスプレイ入門
  • 午前02:30- ディスプレイの配線
  • 05:00- コードウォークスルー
  • 午前08:00- ディスプレイ機能のデモ
  • 10:00- よくある問題とトラブルシューティング

画像

SSD1306 OLED screen 128x32 module
SSD1306 OLED screen 128x32 module
SSD1306 OLED displaying text
SSD1306 OLED displaying text
SSD1306 OLED displaying text
SSD1306 OLED displaying text
Arduino wiring for SSD1306 OLED
Arduino wiring for SSD1306 OLED
38-This is the Arduino code for the PCA9685 16-channel 12-bit servo controller.
言語: C++
39-This is Arduino code for an SSD1306 OLED 128 x 64 display without custom methods.
言語: C++
40-This is the Arduino code for the SSD1306 OLED 128 x 64 display without custom methods.
言語: C++
コピーしました!

ファイル📁

ファイルは利用できません。