實驗說明:
- Arduino LCD的選擇有很多種,尺寸也很多,但若需要顯示彩色的畫面,那米羅一定是推薦ST7735, CP值最高,效果也不錯的。本範例將介紹ST7735 彩色1.8吋顯示螢幕與Arduino的使用方式。
- 米羅這次選用的是Adafruit函式庫,除了要安裝Adafruit ST7735函式庫,還要安裝Adafruit GFX函式庫,Arduino的Adafruit_GFX函式庫為所有的LCD和OLED顯示器提供了通用語法和圖形功能。這使得撰寫程式時,可以很容易在不同類型顯示器之間稍作調整即可使用,而且操作上對於初學者來說是非常簡單的。
- 另外,米羅也有針對全彩3.5吋LCD顯示螢幕寫了一篇教學文章,有興趣的朋友也可以參考下面連結。
材料:
- Arduino Uno R3
- USB 傳輸線
- ST7735 TFT 1.8吋全彩LCD
- 杜邦線
▼ 購買1.8吋ST7735 LCD:
接線說明:
▼ 接線時請各位務必注意螢幕背板接腳名稱,接錯將會導致螢幕顯示模組燒毀。
BL >> 3.3V
CS >> PIN 10
DC(A0、RS) >> PIN 8
RES >> PIN 9
MOSI(SDA) >> PIN 11
SCK(SCL) >> PIN 13
VCC >> 5V
GND >> GND
安裝 Adafruit ST7735 程式庫
- 在 Arduino 整合環境功能表點選 草稿碼 / 匯入程式庫 / 管理程式庫
- 在右上方搜尋框輸入「 Adafruit ST7735」,下方會列出所有符合條件的程式庫,不同程式庫使用的程式碼並不相同。此處點 選「 Adafruit ST7735」,該項目右下角會出現「安裝」鈕,按「安裝」鈕開始安裝。
安裝 Adafruit GFX 程式庫
- 在 Arduino 整合環境功能表點選 草稿碼 / 匯入程式庫 / 管理程式庫
- 在右上方搜尋框輸入「 Adafruit GFX」,下方會列出所有符合條件的程式庫,不同程式庫使用的程式碼並不相同。此處點 選「Adafruit GFX」,該項目右下角會出現「安裝」鈕,按「安裝」鈕開始安裝。
程式:
#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() {
}
Troubleshooting:
▼若螢幕出現白邊的情況下,可調整這兩個參數,範例如下圖:
ST7735_TFTWIDTH_128
ST7735_TFTHEIGHT_160
ST7735_TFTHEIGHT_160
檔案位置:/Arduino/libraries/Adafruit_ST7735_and_ST7789_Library/Adafruit_ST77xx.h