ARDUINO, 進階篇, 顯示器模組

【Arduino進階教學課程】 ST7735 TFT 全彩顯示螢幕

實驗說明:

  • Arduino LCD的選擇有很多種,尺寸也很多,但若需要顯示彩色的畫面,那米羅一定是推薦ST7735, CP值最高,效果也不錯的。本範例將介紹ST7735 彩色1.8吋顯示螢幕與Arduino的使用方式。
  • 米羅這次選用的是Adafruit函式庫,除了要安裝Adafruit ST7735函式庫,還要安裝Adafruit GFX函式庫,Arduino的Adafruit_GFX函式庫為所有的LCD和OLED顯示器提供了通用語法和圖形功能。這使得撰寫程式時,可以很容易在不同類型顯示器之間稍作調整即可使用,而且操作上對於初學者來說是非常簡單的。

購買1.8吋ST7735 LCD:
https://shop.mirotek.com.tw/shop/400143/

 

材料:
  • Arduino Uno R3
  • USB 傳輸線
  • ST7735 TFT 1.8吋全彩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
檔案位置:/Arduino/libraries/Adafruit_ST7735_and_ST7789_Library/Adafruit_ST77xx.h

相關文章