OLED ディスプレイは、主にコンパクトで消費電力が低く、明るい環境でも優れた視認性を実現できるため、Arduino プロジェクトに統合するための一般的な選択肢となっています。さらに、接続が簡単なため、経験を問わず、電子機器愛好家であれば誰でも簡単に使用できます。この記事では、0.96 インチ OLED ディスプレイを Arduino に接続してプログラムする方法を詳しく説明し、技術的側面の詳細と実用的なコード例を示します。
OLED ディスプレイを扱ったことがない場合は、プロジェクトを開始する前に知っておくべき重要なポイントがいくつかあります。 OLED (有機発光ダイオード) には、LCD などの他の種類のスクリーンとは根本的な違いがあります。たとえば、OLED はバックライトを必要としないため、消費電力が大幅に削減されます。 0.96 インチほどの小さな画面では、プロジェクトがバッテリー駆動の場合、これは不可欠です。では、その特徴を詳しく見ていきましょう。
OLEDスクリーンとは何ですか?
[amazon box=”B008GRTSV6, B01L9GC470″ items=”2″ grid=”2″ image_size=”large” description_items=”0″ template=”widget”]
OLED スクリーンは、電流を流すと発光する有機化合物を使用したディスプレイの一種です。そのテクノロジーにより各ピクセルが独自に発光することが可能になり、屋外での視認性も向上するため、多くのエレクトロニクス プロジェクトに最適です。 Arduino 用に販売されているほとんどの OLED スクリーンには SSD1306 コントローラーが搭載されており、これによりスクリーンへの信号の送信を管理できます。実際、SSD1306 は Arduino プロジェクトで最も一般的なものの XNUMX つであり、後の例で説明します。
OLED スクリーンの主な利点の 0.96 つは、消費電力が低いことです。平均して、小型の 20 インチ画面は約 128mA を消費します。これがなぜ重要なのでしょうか? Arduino プロジェクトの電源にバッテリーを使用している場合、消費電力を削減することは常に大きな利点です。また、解像度は64×XNUMXピクセルなので、そのサイズを考慮すると非常に鮮明な画像を表現できます。
一方で、このタイプの画面で発生する可能性のある問題の 1 つは、サイズが非常に小さいことです。視認性は良好ですが、多くの情報を表示する必要があるプロジェクトでは、このサイズでは不十分な場合があります。
OLEDディスプレイをArduinoに接続する
[amazon box=”B008GRTSV6, B01L9GC470″ items=”2″ grid=”2″ image_size=”large” description_items=”0″ template=”widget”]
OLED ディスプレイは、モデルに応じて I2C または SPI バスを使用して Arduino ボードに簡単に接続できます。このチュートリアルでは、最も一般的で最も単純な接続の 2 つである IXNUMXC を使用した接続に焦点を当てます。
次のように、OLED ディスプレイのピンを Arduino の対応するピンに接続する必要があります。
- GND (グランド) Arduino の GND ピン
- VCCとArduinoの5Vまたは3.3Vピン
- SDAからArduinoピンA4へ
- SCL を Arduino のピン A5 に接続
ご覧のとおり、接続は非常に簡単です。必要なケーブルは 2 本だけです。 SPI バスを使用する場合でも、IXNUMXC バスを使用する場合でも、接続プロセスは似ていますが、ピンは選択した通信の種類によって異なります。
OLED ディスプレイのコード例
OLED スクリーンを Arduino で動作させるための最良のオプションの 1306 つは、Adafruit によって開発されたライブラリを使用することです。前述したように、SSDXNUMX コントローラーはライブラリと互換性があります。 アダフルーツSSD1306これにより、画面上でグラフィックやテキストを作成する際の作業が楽になります。
以下に、I2C 接続を使用して OLED スクリーンにテキストを表示できるようにする基本的なコードを示します。
#include <Wire.h>
#include <Adafruit_GFX.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() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 10);
display.println(F("Hola, Mundo!"));
display.display();
}
void loop() {}
このコードは画面を初期化し、表示をクリアしてから、「Hello, World!」を書き込みます。 OLEDスクリーン上で。 Adafruit GFX ライブラリのさまざまな機能を使用して、グラフを作成したり、線や円を描画したり、画面上に画像を表示したりすることもできます。
OLED スクリーンのその他の役立つ例
上の例は基本的な紹介にすぎませんが、OLED ディスプレイを使用するとさらに多くのことができます。たとえば、さまざまな幾何学的形状を描画したり、アニメーションを作成したり、小さなグラフィックを作成したりできます。
Adafruit ライブラリが提供する最も興味深い機能の 1 つは、複数のピクセルを描画する機能です。つまり、スクロール アニメーションを作成できます。追加の例としては、テキストのスクロールがあります。これは、動的に変化するメッセージを表示する場合に非常に役立ちます。
これらの画面のもう 1 つの用途は、温度センサーや湿度センサーなど、インタラクティブなプロジェクトでリアルタイム データを表示することです。新しいセンサーの読み取り値が取得されると画面を更新できるため、プロジェクトがより視覚的になります。
OLED スクリーン使用時の一般的な問題
Arduino で OLED ディスプレイを使用するときに最もよくある問題の 1 つは、メモリ不足です。 Adafruit ライブラリは非常に完成度が高いですが、特に次のようなバージョンでは、Arduino プロセッサ上のかなりの量のメモリを消費する可能性があります。 Arduino Uno。スペースの問題がある場合は、コードを最適化したり、不要な機能を削除したり、Arduino Mega などのより容量の大きいボードを使用したりすることもできます。
もう 2 つの一般的な問題は、IXNUMXC 接続の初期セットアップです。正しい SDA ピンと SCL ピンを使用していない場合、ディスプレイが動作しなかったり、接続エラーが表示されたりする可能性があります。 Arduino モデルに基づいて正しいピンを使用していることを確認してください。
最後に、一部のユーザーは、空白の画面やコマンドに応答しない画面を報告することもあります。この問題は、供給電圧が正しいこと (ディスプレイのモデルに応じて 3.3 V または 5 V) とケーブルが正しく接続されていることを確認することで解決できます。