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と連携させた失敗作に続く。
コメント