0.96インチ カラーLCD(160×80)

AliExpressで色々買いあさってます。
Adafruitの0.96” 160×80 カラーLCD(ST7735) のクローン品@183円で購入。

Arduino NanoSPI接続&動作確認です。

Arudino Nano側
GND
+5V
D13(SCK)
D11(MOSI)
D8
D9
D10
ST7735側
GND
VCC
SCL
SDA
RES
DC
CS
BUK(接続無し)

ライブラリは Adafruit_ST7735.h , Adafruit_GFX.h を使いました。

ライブラリのサンプルが素直に動く訳もなく、調査色々で分かったこと。
・VCC、3.3Vだと動作不安定だった。
・画面は80×160が正方向。
・反転モードに設定が必要。
・16bitカラーの並びが、B(5b):G(6b):R(5b)
・微妙にドットがずれてる&ゴミが出る。
以下、検証用ソース。

#include "Adafruit_GFX.h"    // Core graphics library
#include "Adafruit_ST7735.h" // Hardware-specific library for ST7735

#define CS   10
#define DC    9
#define RESET 8
#define _RGB(_r,_g,_b)  (_r | (_g << 5) | (_b << 11))

Adafruit_ST7735 tft = Adafruit_ST7735(CS, DC, RESET);

void setup()
{
  tft.initR(INITR_MINI160x80);  // Init ST7735S mini display
  tft.setRotation(3);
  tft.invertDisplay(true);
  tft.fillScreen(ST77XX_BLACK);
}

void loop()
{
  tft.fillScreen(ST77XX_BLACK);
  tft.fillRect(0,0,160,80,_RGB(0x00,0x00,0x10));
  tft.drawRect(0,0,160,80,_RGB(0x1F,0x3F,0x1F));

  tft.setCursor(0, 0);
  tft.setTextColor(_RGB(0x1F,0x00,0x00));
  tft.setTextSize(3);
  tft.print("ST7735");
  delay(5000);
}

オフセットがずれてるので、修正かけます。
libraries\Adafruit_ST7735_and_ST7789_Library
内の Adafruit_ST7735.cpp
235行目付近 _colstart_rowstart 少しずらします。

  } else if (options == INITR_MINI160x80) {
    _height = ST7735_TFTWIDTH_80;
    _width = ST7735_TFTHEIGHT_160;
    displayInit(Rcmd2green160x80);
    _colstart = 26;	//24;
    _rowstart =  1;	//0;
  } else {

修正後の実行結果。

描画はチラツキが目立つぐらい遅い。(SPIのクロックはライブラリ設定のまま)
Arduino Nanoだとダブルバッファもできないですしね。
何でもアリな中華製ですが、安いんでヨシ。ですかね。。
次回、BME280と連携させた失敗作に続く。

コメント

タイトルとURLをコピーしました