一、 實驗說明:為什麼選擇 ST7735 TFT 全彩顯示螢幕?
在 Arduino 專題製作中,顯示器的選擇非常多樣。若需要呈現豐富的彩色畫面與圖形介面,米羅強烈推薦使用 ST7735 1.8 吋 TFT 全彩顯示螢幕,它不僅 CP 值最高,且顯示效果鮮豔、視角極寬。
核心技術與軟體架構
硬體規格: 搭載 ST7735 控制器晶片,支援 65K 真實彩色,解析度為 像素,採用高速的 SPI 介面 進行通訊。
Adafruit 繪圖生態系: 本範例採用廣受好評的 Adafruit 函式庫。除了主體的
Adafruit_ST7735驅動外,還需搭配Adafruit_GFX核心圖形庫。強大的通用語法:
Adafruit_GFX為所有的 LCD 和 OLED 顯示器提供了統一的圖形與文字繪製語法。這使得開發者未來若更換顯示器型號,也能輕鬆轉移程式碼。
二、 實驗所需材料與電路接線圖 (Hardware Setup)
請依照下表的引腳對接說明,將 1.8 吋 ST7735 螢幕模組正確連接至 Arduino Uno。
⚠️ 安全警告: 接線時請務必仔細核對螢幕背板的引腳名稱(如 BL、CS、DC、RES),接錯電源極性或腳位將可能導致顯示模組永久損毀。
🛒 準備材料
Arduino Uno R3 開發板 x 1
USB 傳輸線 x 1
1.8 吋 ST7735 TFT 全彩 LCD 模組 x 1
杜邦線 若干
🛍️ 準備好你的硬體工具了嗎? 推薦選購:米羅科技 – Arduino 程式學習爆款套件組(包含豐富驅動專案模組)
▼ 購買1.8吋ST7735 LCD:
⚡ 腳位對接說明 (Pin Mapping)
三、 必備函式庫安裝步驟
在編譯程式碼之前,必須透過 Arduino IDE 內建的程式庫管理員安裝兩個核心套件:
安裝 Adafruit ST7735 程式庫:
打開 Arduino IDE,點選上方選單的 草稿碼 (Sketch) > 匯入程式庫 (Include Library) > 管理程式庫 (Manage Libraries)。
在右上角搜尋框輸入 「Adafruit ST7735」。
找到該項目後,點擊右下角的 「安裝 (Install)」 按鈕。
安裝 Adafruit GFX 程式庫:
同樣在程式庫管理器中,輸入搜尋 「Adafruit GFX」。
找到 Adafruit GFX Library 後點擊 「安裝」(若提示安裝額外相依相容套件,請一併安裝)。

四、 完整程式碼實作:圖形、字型與色彩繪製
本程式示範如何初始化 ST7735 螢幕、設定自訂英文字型、輸出彩色文字,並透過 mediabuttons() 函式繪製方框、圓形與三角形等幾何圖形。
#include <Adafruit_GFX.h> //核心圖形庫
#include <Adafruit_ST7735.h> //Hardware-specific library for ST7735
#include <Adafruit_ST7789.h> //Hardware-specific library for ST7789
#include <Fonts/FreeMonoBold9pt7b.h> //字型FreeMonoBold9pt7b
#include <Fonts/FreeSansBold9pt7b.h> //字型FreeSansBold9pt7b
#include <Fonts/FreeSerif9pt7b.h> //字型FreeSerif9pt7b
#include <SPI.h>
#define TFT_CS 10 // TFT CS PIN腳
#define TFT_DC 8 // TFT DC(A0、RS) PIN腳
#define TFT_RST 9 // TFT RES(Reset) PIN腳
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
void setup(void) {
tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab
tft.setRotation(1); //螢幕轉向
tft.fillScreen(ST77XX_BLACK); //設定螢幕背景為黑色
tft.setCursor(6, 15); //設定文字游標開始位置
tft.setTextColor(ST77XX_WHITE); //設定文字顏色
tft.setFont(&FreeMonoBold9pt7b); //字型
tft.print(" Hi Mirotek !"); //顯示文字
tft.setCursor(20, 52);
tft.setTextColor(ST77XX_RED);
tft.setFont(&FreeSansBold9pt7b);
tft.print("Color Display");
tft.setCursor(3, 80);
tft.setTextColor(ST77XX_GREEN);
tft.setFont(&FreeSerif9pt7b);
tft.print("shop.mirotek.com.tw");
mediabuttons(); //繪制幾何圖形
}
void mediabuttons() {
tft.drawRect(25, 95, 30, 30, ST77XX_MAGENTA); //畫一個方框 x,y,w,h,顏色值
tft.fillRect(28, 98, 24, 24, ST77XX_MAGENTA); //填滿方形 x,y,w,h,顏色值
tft.drawCircle(80, 110, 15, ST77XX_BLUE); //畫一個空的圓框 x,y,radius,顏色值
tft.fillCircle(80, 110, 12, ST77XX_BLUE); //填滿圓形 x,y,radius,顏色值
tft.drawTriangle(105, 125, 125, 95, 145, 125, ST77XX_YELLOW);//給予三角形的三個頂點座標點,以及顏色值。
tft.fillTriangle(110, 122, 125, 100, 140, 122, ST77XX_YELLOW);//給予三角形的三個頂點座標點,以及顏色值。
}
void loop() {
}
五、 常見問題與除錯 (FAQ)
Q1:如何修改螢幕的顯示方向(直立轉橫向)?
解答: 可以透過更改
tft.setRotation(n);中的數值n(通常為 0 到 3)來切換 0 度、90 度、180 度或 270 度的畫面旋轉。
Q2:畫面完全黑屏,背光有亮但沒有顯示任何文字或圖形?
解答: 請檢查 SPI 的硬體接線(MOSI 與 SCK 是否對應到 Uno 的 Pin 11 與 Pin 13),並確認 DC 腳位與 CS 腳位是否有插錯。
Q3:螢幕邊緣出現白色邊框或畫面位置偏移怎麼辦?
解答: 市面上部分批次的 ST7735 液晶螢幕模組其控制器內部記憶體偏移量不同。若您發現畫面四周出現異常白邊或影像被裁切,可以透過修改 Adafruit 函式庫中的全域參數來進行修正:
調整解析度參數:
ST7735_TFTWIDTH_128與ST7735_TFTHEIGHT_160設定檔案路徑位置:
/Arduino/libraries/Adafruit_ST7735_and_ST7789_Library/Adafruit_ST77xx.h調整晶片標籤: 調整對應的晶片初始化標籤(例如從
INITR_BLACKTAB改為INITR_REDTAB或INITR_GREENTAB)即可完美解決版面偏移問題。

檔案位置:/Arduino/libraries/Adafruit_ST7735_and_ST7789_Library/Adafruit_ST77xx.h


