ST7735的尺寸蠻多的,最常見的是1.44吋、1.8吋,解析度分別是128x128、128x160,足夠用在許多專題上了。本範例以1.8吋的橘色版本進行示範。



我們這次是用Arduino Uno來接ST7735,其實能選的函式庫並不多,傑森選的是最多人用的Adafruit函式庫。除了要安裝Adafruit ST7735函式庫,還要安裝Adafruit GFX函式庫,因為不管是OLED或是LCD,Adafruit有關顯示的處理,都是透過這個函式庫的。




再來就是接線了,ST7735款式還不少,基本上會有兩種針腳的款式:8針、10針,我們這次是用8針的,至於10針的其實是多了兩個NC腳,不用接線的,其它只是順序不同而已。
  • MOSI(SDA) >> PIN 11
  • SCK(SCL) >> PIN 13
  • CS >> PIN10
  • DC(A0、RS) >>
  • RST >> PIN9
  • LED >> 3.3V
  • VCC >> 5V
  • GND >> GND



至於程式部份,我
們先簡單的顯示文字,畫三個幾何圖形。寫法就是Adafruit GFX的那套,不管用在OLED或LCD基本是一樣的。
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <Adafruit_ST7789.h>
#include <Fonts/FreeSerif12pt7b.h>
#include <Fonts/FreeSansBold9pt7b.h>
#include <Fonts/FreeSans9pt7b.h>
#include <SPI.h>

#define TFT_CS  10 // TFT LCD的CS PIN腳
#define TFT_DC   8 // TFT DC(A0、RS) 
#define TFT_RST  9 // TFT Reset

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void setup(void) {
  
  // 1.8" 用這行
  tft.initR(INITR_BLACKTAB);      // Init ST7735S chip, black tab

  // 1.44" TFT:
  //tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab

  tft.setRotation(1);  //螢幕轉向
  tft.fillScreen(ST77XX_BLACK);  //填滿黑色
  tft.setCursor(10, 30);  //設定文字游標點
  tft.setTextColor(ST77XX_WHITE);  //設定文字顏色
  tft.setFont(&FreeSerif12pt7b);  //字型
  tft.print("Hello World !");  //顯示文字
  tft.setCursor(0, 60);
  tft.setTextColor(ST77XX_RED);
  tft.setFont(&FreeSansBold9pt7b);
  tft.print("JMaker Workshop");
  tft.setCursor(0, 80);
  tft.setTextColor(ST77XX_YELLOW);
  tft.setFont(&FreeSans9pt7b);
  tft.print("www.jmaker.com.tw");
  showIcons();  //繪制幾何圖形
}

void showIcons() {
  tft.fillRoundRect(30, 95, 30, 30, 5, ST77XX_MAGENTA); //圓角矩形x,y,w,h,radius,color
  tft.fillCircle(80, 110, 15, ST77XX_BLUE);  //圓形 x,y,radius
  tft.drawRect(105, 95, 30, 30,ST77XX_GREEN);  //矩形外框 x,y,width,height
  delay(500);
}

void loop() {
  
}
文字的處理就是以下這段:
tft.setRotation(1);  //螢幕轉向
tft.fillScreen(ST77XX_BLACK);  //填滿黑色
tft.setCursor(10, 30);  //設定文字游標點
tft.setTextColor(ST77XX_WHITE);  //設定文字顏色
tft.setFont(&FreeSerif12pt7b);  //字型
tft.print("Hello World !");  //顯示文字
比較要注意的,就是字型要預先載入哦!像這個例子就用到了3個字型。
#include <Fonts/FreeSerif12pt7b.h>
#include <Fonts/FreeSansBold9pt7b.h>
#include <Fonts/FreeSans9pt7b.h>
至於Adafruit的字型可以參考官方網站:
https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts
另外我們還加了繪製3個幾何圖形:圓角矩形、圓形、矩形外框,都只要一行程式就完成了。
tft.fillRoundRect(30, 95, 30, 30, 5, ST77XX_MAGENTA); //圓角矩形x,y,w,h,radius,color
tft.fillCircle(80, 110, 15, ST77XX_BLUE);  //圓形 x,y,radius
tft.drawRect(105, 95, 30, 30,ST77XX_GREEN);  //矩形外框 x,y,width,height