ST7789 IPSディスプレイ

Category: 電子工作
thumbnail

電子工作に使えるディスプレイとして以前紹介した2.8インチILI9341ディスプレイなど、すでにいくつか持っているのですが、記事の最後に触れたように画質が悪い上に視野角がとんでもなく狭いという問題がありました。

ST7789ディスプレイ

ということでアリエクでIPSのディスプレイを買ってみました。
5個セットが1750円、一つあたり350円です。
https://ja.aliexpress.com/item/1005005769316344.html

  • 1.69インチ
  • IPS液晶パネル
  • 280x240px (7:6)
  • フルカラー
  • タッチパネルなし
  • SPIインターフェイス
  • ドライバIC ST7789

SDカードとのサイズ比較
ディスプレイサイズはSDカードより一回り大きいくらい

このディスプレイは2.8インチILI9341ディスプレイと比べるとサイズは小さいのに画素数は同じくらいなので、電子工作に使われるディスプレイとしては最高クラスに画素密度が高いです。
自分が今見ている21.5インチのフルHDディスプレイが100dpiですが、このディスプレイはその倍の200dpiと完敗です。メインノートのMacBookAirのディスプレイが224dpiなのでそれと同じくらいです。

その他の特徴として角が丸くなっています。
Adafruitにも同じような製品があり、コントローラーやサイズも同じです。switch-scienceでは3600円と、かなり高価な製品のようです。

ピン配置

Pin Description
BLK バックライト電源
CS SPI CS
DC データ・コマンド
RES リセット
SDA SPI MOSI
SCL SPI SCK
VCC 3~5V
GND

動かしてみる

配線

プログラム

前回同様、Adafruit GFXライブラリを使うので、ほとんど同じプログラムで動きます。
ライブラリの詳しい使い方は以前の記事を参考にしてください。

#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include <SPI.h>
#include <Fonts/FreeSans24pt7b.h>

#define CS   17
#define SCK  18
#define MOSI 19
#define RST  20
#define DC   21


Adafruit_ST7789 tft = Adafruit_ST7789(&SPI, CS, DC, RST);

void setup() {
  tft.init(240, 280);
  tft.setRotation(3);


  tft.fillScreen(ST77XX_WHITE);

  tft.setCursor(30, 50);
  tft.setFont(&FreeSans24pt7b);
  tft.setTextColor(ST77XX_BLACK);

  tft.printf("Hello World!");
}

void loop() {}


Lが多い...

画素密度が高いだけあって非常に見やすいです。
目的の視野角に関しても完璧で、ほぼ真横からでも問題なく読めます。

横から見た様子

画像表示

ソースコード
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include <SPI.h>
#include "fedora42.h"  // https://moris.day/files/blog/st7789-ips-display/fedora42.h

#define CS   17
#define SCK  18
#define MOSI 19
#define RST  20
#define DC   21

Adafruit_ST7789 tft = Adafruit_ST7789(&SPI, CS, DC, RST);

void setup() {
  tft.init(240, 280);
  tft.setRotation(3);

  tft.drawRGBBitmap(0, 0, fedora42_day, 280, 240);
}

void loop() {}


Fedora42の壁紙

写真でうまく伝えられないのが残念な程に画質が良いです。
発色などはMacBookに劣りますが、これだけの画素密度、視野角があれば電子工作用途で困ることはないでしょう。

これがひとつ350円ですから大当たりですね。