ESP32彩屏顯示入門:我要五彩斑斕的黑,還有五光十色的白 | ESP32開發之旅-Arduino版

本系列歷史文章目錄:

微信封面
不好意思,本期課程用了那麼殺馬特的封面,但是這張圖卻充分表達了彩屏的特點:可以顯示五彩斑斕的顏色。

概述

一直在關注本系列教程的朋友,應該知道,前面幾期課程,我們基本用到了掌控板自帶的 OLED 顯示屏來顯示內容,但是掌控板自帶的 OLED 顯示屏是一塊單色屏,看久了單色顯示屏,你是不是有點膩了呢?

所以從本期內容開始,我將通過幾篇教程,帶大家玩轉彩色顯示屏。本篇是彩屏顯示的第一期:ESP32彩屏顯示入門:我要五彩斑斕的黑,通過本篇課程內容的學習,我將帶大家入門彩屏的使用。
我要五彩斑斕的黑
由於掌控板上已經連接了一塊屏幕了,所以本期課程使用的硬件不是掌控板,而是另一塊 ESP32 開發板:DFRobot 出品的 FireBeetle-ESP32。關於這塊開發板的介紹,我在這個系列的第一期就已經介紹過了,大家可以直接去第一期查看:ESP32 概述與 Arduino 軟件準備
FireBeetle_Board-ESP32_V3.0
爲什麼選擇這塊開發板呢?因爲 DFRobot 專門爲這塊開發板設計了簡單方便的擴展板,因此在後面項目接線的時候,就會特別方便;而且 DFRobot 還爲它設計了好看的矢量圖,作爲一個顏值控,後續繪製接線圖怎麼能少得了它!當然最重要的一個原因是,我手裏除了掌控板,就這麼一塊 ESP32 的開發板……(這麼牽強的理由,你來打我呀

在這裏插入圖片描述

如果你選擇的是其他 ESP32 開發板,也是沒有問題的,接線方法和程序也是完全兼容的。

常用彩屏介紹

有了 ESP32 開發板,那麼又有哪些彩屏可以使用呢?不管是從尺寸、分辨率、驅動芯片類型,其實是有非常多的選擇的。最常用的一些彩屏尺寸有 1.5 寸、2.0 寸、2.4 寸、2.8 寸、3.2 寸等;分辨率類型有:128×160、240×240、240×320 等;驅動芯片型號有 ST7735、ST7789、ILI9341 等。如下圖所示,即爲一些創客製作中常見的彩屏。
彩屏大集合
(圖片來自:https://www.instructables.com/id/Select-Color-Display-for-ESP32/)

想要了解詳細的彩屏選型,可以直接去 Instructables 上看下面這篇評測文章,寫的非常詳細,這裏不再重複造輪子了。

Select Color Display for ESP32:https://www.instructables.com/id/Select-Color-Display-for-ESP32/

在本期教程中,我使用的是一款 2.4 寸的 TFT_LCD 的彩屏,它的驅動芯片是 ILI9341,分辨率爲 240×320,如下圖所示。
ILI9341_2.4_TFT_LCD
這塊屏幕的詳細參數如下表所示:
屏幕參數
這塊彩屏採用的是 SPI 接線方式,引腳定義如下:
彩屏引腳說明表

SPI (Serial Peripheral Interface),即串行外圍設備接口,是一種高速全雙工的通信總線。本質上和前面課程用過的 UART 串口、I2C 一樣,是一種通訊協議。

SPI 的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備。SPI 通訊使用 3 條總線( SCK、MOSI、MISO)及片選線(CS 或 SS):

  • MISO:Master Input Slave Output,主設備數據輸入,從設備數據輸出;
  • MOSI:Master Output Slave Input,主設備數據輸出,從設備數據輸入;
  • SCK:Serial Clock,時鐘信號,由主設備產生;
  • CS:Chip Select,從設備使能信號,由主設備控制。

彩屏驅動庫

針對不同的彩屏驅動芯片,常用的 Arduino 彩屏驅動庫也有很多種選擇,在 Arduino IDE 的庫管理器中,搜索“TFT”就可以看到許多彩屏驅動庫,比如:

  • Arduino-ST7789-Library:https://github.com/ananevilya/Arduino-ST7789-Library
  • Adafruit-ST7735-Library:https://github.com/adafruit/Adafruit-ST7735-Library
  • TFT_eSPI:https://github.com/Bodmer/TFT_eSPI

本教程使用的庫是 TFT_eSPI,選擇這個庫的原因有:

  • 該庫在 GitHub 上 Star 的人數比較多,而且至今還在保持活躍地更新,所以可靠性、專業型比較有保證;
  • 支持各種常用的驅動芯片,比如 ST7735、ST7789、ILI9341 等,兼容性比較好;
  • 據說這個庫的性能也是最出色的。這裏我沒有詳細考究與測試,而且對大部分用戶來說也不重要。

後面的彩屏系列教程,如無特殊說明,我們就以這個庫爲例。

TFT_eSPI 庫文件安裝

在 Arduino 中打開庫管理器,搜索 TFT_eSPI,然後點擊安裝即可。
Arduino中搜索TFT_eSPI
TFT_eSPI 庫雖然有很多優勢,但是針對普通用戶可能也有一個比較麻煩的地方,那就是安裝完這個庫之後,我們需要針對不同的彩屏,對這個庫進行一些配置才能使用。

轉到 Arduino 庫文件安裝目錄,打開 TFT_eSPI 庫所在位置,以 Windows 系統爲例,該庫的安裝目錄一般爲:

C:\Users\<用戶名>\Documents\Arduino\libraries\TFT_eSPI

如果是你使用的是綠色版 Arduino 的話,該庫的安裝目錄一般爲:

<Arduino安裝目錄>\Arduino\portable\sketchbook\libraries\TFT_eSPI

然後在庫文件目錄中打開 User_Setup.h 這個文件,根據自己的屏幕類型與驅動芯片類型進行相應的設置,這裏以我使用的 2.4 寸 ILI9341 TFT LCD 彩屏爲例。如果你有耐心的話,想要仔細研究各種設置選項的話,也可以仔細閱讀這個文件中的說明,按照它的示例進行設置即可;如果你嫌一堆英文看起來比較麻煩的話,直接按照我的教程設置也是可以的。

首先需要設置的是彩屏的驅動芯片類型,這塊彩屏使用的驅動芯片爲 ILI9341,所以這裏我們註釋掉其他芯片,只留下 #define ILI9341_DRIVER 這行,如下圖所示:
User_Setup驅動類型選擇
接着設置彩屏連接的 IO 引腳,先註釋掉下圖中所示的默認引腳設置:
User_Setup註釋默認引腳
然後將引腳設置修改爲:

// FireBeetle ESP32
#define TFT_MISO 19
#define TFT_MOSI 23  // fixed pin, SDA -> MOSI (IO23)
#define TFT_SCLK 18  // fixed pin, SCL -> SCK (IO18)
#define TFT_CS   27  // Chip select control pin D4 (IO27)
#define TFT_DC   25  // pin of your choice D2 (IO25)
#define TFT_RST  26  // pin of your choice D3 (IO26)

如下圖所示:
User_Setup接線引腳修改
修改完成後的 User_Setup.h 文件如下:
User_Setup

接線圖

根據前面 TFT_eSPI 驅動庫的設置,ESP32 與 彩屏的接線也比較簡單,只要按照代碼中對應接線即可。

注意:此處代碼中的引腳編號,我使用了 IOx 的編號,而不是 Dx 的編號形式,因爲 IOx 編號的形式針對所有 ESP32 開發板都適用。FireBeetle-ESP32 開發板的 IOx 與 Dx 編號對應關係如下圖所示:
FireBeetle-ESP32引腳圖
接線圖如下:
彩屏接線圖

Hello 彩屏

所有這些都設置完成之後,我們就可以愉快地編寫程序、查看效果啦!

爲了更快的體驗彩屏的顯示效果,本篇暫時先不講解彩屏的編程與代碼,我給大家先上傳 TFT_eSPI 庫自帶的一些示例程序,看看效果。彩屏示例程序的路徑爲:

Arduino菜單欄→文件→示例→TFT_eSPI

如下圖所示:
彩屏示例路徑
然後隨便挑選幾個示例程序,上傳到 ESP32 中 查看效果。

注意:注意由於我把視頻轉成了 GIF,所以看起來可能稍微有點卡頓,實際效果是很順滑的。
顯示不同顏色文字效果
在這裏插入圖片描述
在這裏插入圖片描述
黑客帝國代碼雨效果
在這裏插入圖片描述
立體圖形顯示效果
七彩文字顯示效果
參數跑分顯示效果
看完這些“五彩斑斕的黑”,是不是馬上想要入手一塊彩屏、然後編寫代碼玩玩呢?別急,下期教程,正式教你彩屏代碼編程!

總結

在本章中,我們學習了:

  • 常見的彩屏類型與常用的彩屏驅動庫;
  • TFT_eSPI 驅動庫的設置方法;
  • 彩屏與 ESP32 的接線方法;
  • 上傳程序,查看彩屏的顯示效果。

這只是彩屏系列的入門篇,後面還會再寫幾篇專門對彩屏的編程進行詳細介紹,感興趣的話,可以收藏點贊,我們下期見!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章