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

Arduino NanoとSPI接続&動作確認です。
Arudino Nano側
GND
+5V
D13(SCK)
D11(MOSI)
D8
D9
D10
–
GND
+5V
D13(SCK)
D11(MOSI)
D8
D9
D10
–
ST7735側
GND
VCC
SCL
SDA
RES
DC
CS
BUK(接続無し)
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と連携させた失敗作に続く。


コメント