私たちのほとんどは、ユーザーに情報を表示するためにほとんどのプロジェクトで使用されている16×2ドットマトリックスLCDディスプレイに精通しているでしょう。しかし、これらのLCDディスプレイには、できることに関して多くの制限があります。このチュートリアルでは、OLEDディスプレイとそれらのArduinoの使用方法について学習します。市場には多くの種類のOLEDディスプレイがあり、それらを機能させる方法はたくさんあります。このチュートリアルでは、その分類と、プロジェクトに最適な分類について説明します。
必要なハードウェア:
- 7ピン128×64OLEDディスプレイモジュール(SSD1306)
- Arduino UNO / Nano
- ブレッドボード
- 接続線
- コンピューター/ラップトップ
OLEDディスプレイについて知る:
OLEDという用語は「 有機発光ダイオード」の 略で、ほとんどのテレビで使用されているのと同じ技術を使用していますが、それらに比べてピクセル数が少なくなっています。これらのかっこいいディスプレイモジュールをArduinoとインターフェイスさせると、プロジェクトがかっこよく見えるので、とても楽しいです。ここでは、OLEDディスプレイとそのタイプに関する記事全体を取り上げました。
私たちは、使用しているモノクロ7ピンSSD1306 0.96” OLEDディスプレイを。このディスプレイを選択する理由は、SPI 3ワイヤーモード、SPI 4ワイヤーモード、IICモードなどの3つの異なる通信プロトコルで動作できるためです。このチュートリアルでは、モジュールをSPI 4線モードで使用する方法について説明します。これは、通信の最速モードであり、デフォルトのモードであるためです。
ピンとその機能は、以下の表で説明されています。
ピン番号 |
ピン名 |
他の名前 |
使用法 |
1 |
Gnd |
接地 |
モジュールのアースピン |
2 |
Vdd |
Vcc、5V |
電源ピン(3-5V許容) |
3 |
SCK |
D0、SCL、CLK |
クロックピンとして機能します。I2CとSPIの両方に使用 |
4 |
SDA |
D1、MOSI |
モジュールのデータピン。IICとSPIの両方に使用 |
5 |
RES |
RST、RESET |
モジュールをリセットします(SPI中に役立ちます) |
6 |
DC |
A0 |
データコマンドピン。SPIプロトコルに使用 |
7 |
CS |
チップセレクト |
SPIプロトコルで複数のモジュールを使用する場合に便利です |
このチュートリアルでは、モジュールを4線式SPIモードで操作するだけで、残りは他のチュートリアルに残します。
Arduinoコミュニティは、これを非常に簡単にするために直接使用できる多くのライブラリをすでに提供しています。いくつかのライブラリを試してみたところ、Adafruit_SSD1306ライブラリは非常に使いやすく、グラフィックオプションがいくつかあることがわかったため、このチュートリアルでも同じものを使用します。ただし、プロジェクトにメモリ/速度の制約がある場合は、U8gライブラリを使用してみてください。これは、動作が速く、プログラムメモリの占有量が少ないためです。
ハードウェアと接続:
ArduinoとインターフェースするSSD1306OLEDの回路図は本当にシンプルで、以下に示されています。
OLEDモジュールとArduinoの間にSPI通信を確立しただけです。OLEDは3V-5Vで動作し、消費電力が非常に少ないため、外部電源は必要ありません。ワイヤーを使用して接続するか、私が使用したようにブレッドボードを使用するだけで、簡単に実験できます。接続は、以下の物語にも記載されています
S.No |
OLEDモジュールのピン名 |
Arduinoのピン名 |
1 |
Gnd、Ground |
接地 |
2 |
Vdd、Vcc、5V |
5V |
3 |
SCK、D0、SCL、CLK |
10 |
4 |
SDA、D1、MOSI |
9 |
5 |
RES、RST、RESET |
13 |
6 |
DC、A0 |
11 |
7 |
CS、チップセレクト |
12 |
注: 電源を入れただけでは、OLEDモジュールのバックライト/グローを視覚化することはできません。OLEDディスプレイの変化に気付くには、正しくプログラムする必要があります。
Arduino用のSSD1306OLEDディスプレイのプログラミング:
接続の準備ができたら、Arduinoのプログラミングを開始できます。前に述べたように、このOLEDモジュールを操作するためにAdafruitライブラリとGFXライブラリを使用します。手順に従って、OLEDディスプレイをテスト実行します。
ステップ1:以下のリンクを使用して、GithubからAdafruitライブラリとGFXライブラリをダウンロードします
- Adafruitライブラリ
- GFXグラフィックライブラリ
ステップ2: 2つのZipファイルをダウンロードする必要があります。次の手順でArduinoに追加します
以下に示すように、 スケッチ->ライブラリを含める-> Zipライブラリ を 追加し ます。次に、ダウンロードしたライブラリを選択します。一度に選択できるライブラリは1つだけなので、この手順をもう一度繰り返す必要があります。
ステップ3:次の画像に示すように、 [ファイル]-> [例]-> [Adafruit SSD1306]-> [SSD1306_128 * 64_SPI.ino] を選択して、サンプルプログラムを起動します。
ステップ 4:64 行目の上のサンプルプログラム内に、次の画像に示すように 「#defineSSD1306_LCDHEIGHT64」 という行を追加します。
ステップ5:プログラムをアップロードすると、次の図に示すように、デフォルトのAdafruitサンプルコードでOLEDディスプレイが起動するのがわかります。完全な作業ビデオは終わりに与えられています。
このサンプルプログラムは、OLED画面に表示できるすべての可能なグラフィックを示しています。このコードは、ビットマップの作成、線/円/長方形の描画、ピクセルでの再生、さまざまなフォントとサイズの文字と文字列の表示などに十分なはずです。
ライブラリとその機能をよりよく理解したい場合は、さらに読むことができます。コードの各ジャンクは分割され、コメント行の助けを借りて説明されます。完全なコードはこの記事の最後にあります
画面の表示とクリア:
OLED画面への書き込みは、黒板への書き込みと同じです。値を書き込んでから、上書きする前にクリーンアップする必要があります。次のコマンドは、ディスプレイの書き込みとクリアに使用されます
display.display(); //ディスプレイに書き込むdisplay.clearDisplay(); //表示をクリアします
文字変数の表示:
変数内のコンテンツを表示するには、次のコードを使用できます。
char i = 5; //表示される変数display.setTextSize(1); //テキストのサイズを選択しますdisplay.setTextColor(WHITE); //モノクロ表示の場合のみ可能ですdisplay.setCursor(0,0); // 0,0はOLED画面の左上隅ですdisplay.write(i); //表示する変数を書き込みます
線を引く、円、長方形、三角形:
ディスプレイにいくつかのシンボルを追加したい場合は、次のコードを使用して次のいずれかを描画できます
display.drawLine(display.width()-1、0、i、display.height()-1、WHITE); // void drawLine(x0、y0、x1、y1、color); display.drawRect(i、i、display.width()-2 * i、display.height()-2 * i、WHITE); // void drawRect(x0、y0、w、h、color); display.drawTriangle(display.width()/ 2、display.height()/ 2-i、display.width()/ 2-i、display.height()/ 2 + i、display.width()/ 2 + i、display.height()/ 2 + i、WHITE); // void drawTriangle(x0、y0、x1、y1、x2、y2、color); display.drawCircle(display.width()/ 2、display.height()/ 2、i、WHITE); // void drawCircle(x0、y0、r、color);
画面に文字列を描画する:
次のコードのチャンクを使用して、画面の特定の場所とサイズにメッセージを表示できます。
display.setTextSize(2); //テキストのサイズを設定しますdisplay.setTextColor(WHITE); //色設定display.setCursor(10,0); //文字列は10.0(x、y)で始まりますdisplay.clearDisplay(); //画面の以前の表示を消しますdisplay.println( "Circuit Digest"); //ここに文字列を出力します「CircuitDigest」display.display(); //テキストを画面に送信します
ビットマップ画像の表示:
OLEDモジュールで実行できる信頼できないことの1つは、ビットマップの表示に使用できることです。次のコードは、ビットマップ画像を表示するために使用されます
static const unsigned char PROGMEM logo16_glcd_bmp = {B00000000、B11000000、B00000001、B11000000、B00000001、B11000000、B00000011、B11100000、B11110011、B11100000、B11111110、B11111000、B01111110、B11111111、B00110011、B10011111、B00011111、B11 B10100000、B00111111、B11100000、B00111111、B11110000、B01111100、B11110000、B01110000、B01110000、B00000000、B00110000}; display.drawBitmap(XPO]、YPOS、ビットマップ、w、h、WHITE); // void drawBitmap(x、y、* bitmap、w、h、color);
ご覧のとおり、画像を表示するには、ビットマップデータをPROMGMEMディレクティブの形式でプログラムメモリに保存する必要があります。簡単に言えば、上記のように配列からシーケンスまたは値を渡すことにより、各ピクセルをどう処理するかをOLEDディスプレイに指示する必要があります。この配列には、画像のビットマップデータが含まれます。
複雑に聞こえるかもしれませんが、Webツールを使用すると、画像をビットマップ値に変換して上記の配列にロードするのは非常に簡単です。
画像を読み込んで設定を調整するだけで、画像の好みのプレビューを取得できます。次に、[コードの生成]をクリックして、コードをコピーし、アレイに貼り付けます。プログラムをアップロードすれば、すべて完了です。バットマンのロゴを表示してみたところ、こんな感じでした。
これらのライブラリでできることはまだたくさんあります。完全な可能性を知るには、AdafruitGFXグラフィックスプリミティブのページにアクセスしてください。
これを実行して、いくつかのプロジェクトにOLEDディスプレイを実装する準備ができていることを願っています。問題が発生した場合は、コメントセクションで共有してください。できる限り修正します。