国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ESP32 Arduino 學(xué)習(xí)篇(五)TFT_eSPI庫(kù)

這篇具有很好參考價(jià)值的文章主要介紹了ESP32 Arduino 學(xué)習(xí)篇(五)TFT_eSPI庫(kù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前期準(zhǔn)備:

1.TFT_eSPI庫(kù)的安裝

首先在Libraries里面搜索安裝TFT_eSPI庫(kù)到你的工程文件里面。

ESP32 Arduino 學(xué)習(xí)篇(五)TFT_eSPI庫(kù)
ESP32 Arduino 學(xué)習(xí)篇(五)TFT_eSPI庫(kù)
ESP32 Arduino 學(xué)習(xí)篇(五)TFT_eSPI庫(kù)

2.TFT_eSPI庫(kù)的配置

文件配置

??該庫(kù)有User_Setup.h和 User_Setup_Select.h兩個(gè)配置文件,支持 ①自定義參數(shù)或 ②使用已有配置 驅(qū)動(dòng)TFT屏幕。

User_Setup.h — 由自己定義設(shè)備使用的引腳,若使用此文件配置,則User_Setup_Select.h文件內(nèi)容不要做修改,主要修改有以下幾處:

、

① 用戶設(shè)置文件User_Setup.h

ESP32 Arduino 學(xué)習(xí)篇(五)TFT_eSPI庫(kù)

② 設(shè)置屏幕分辨率

ESP32 Arduino 學(xué)習(xí)篇(五)TFT_eSPI庫(kù)

③ 設(shè)置屏幕引腳

ESP32 Arduino 學(xué)習(xí)篇(五)TFT_eSPI庫(kù)

這里的MOSI連接SDA。

常用API

一、初始化相關(guān)API

1.初始化

 tft.init(); //初始化

初始化屏幕, 如果是ST7735,可以往里面?zhèn)饕粋€(gè)參數(shù), 具體用到時(shí)再看。

2. 填充全屏幕

tft.fillScreen(uint32_t color); //填充全屏幕

填充全屏幕, 后面是顏色值,

3. 屏幕旋轉(zhuǎn)

//反轉(zhuǎn)顯示顏色i = 1反轉(zhuǎn),i = 0正常
tft.invertDisplay(bool i);

二、文字相關(guān)API

1. 設(shè)置打字起始坐標(biāo)位置和字號(hào)

 // 設(shè)置文本顯示坐標(biāo),默認(rèn)以文本左上角為參考點(diǎn),可以改變參考點(diǎn)
void setCursor(int16_t x, int16_t y);

// 設(shè)置文本顯示坐標(biāo),和文本的字體
void setCursor(int16_t x, int16_t y, uint8_t font); 

2. 設(shè)置字體顏色

// 設(shè)置文本顏色
void setTextColor(uint16_t color);

// 設(shè)置文本顏色與背景色
void setTextColor(uint16_t fgcolor, uint16_t bgcolor);

3. 設(shè)置字體大小

// 設(shè)置文本大小,文本大小范圍為 1~7 的整數(shù)
void setTextSize(uint8_t size);

4. 顯示字體

tft.print("Hello World!");
tft.println("Hello World!");

特別注意: 字庫(kù)7是仿7段數(shù)碼屏的樣式

三、繪制文字相關(guān)API

1. 繪制字符串(居左)

int16_t drawString(const String &string, int32_t x, int32_t y)
int16_t drawString(const char *string, int32_t x, int32_t y)
int16_t drawString(const String &string, int32_t x, int32_t y, uint8_t font)
int16_t drawString(const char *string, int32_t x, int32_t y, uint8_t font)

2. 繪制字符串(居中)

int16_t drawCentreString(const char *string, int32_t x, int32_t y, uint8_t font)
int16_t drawCentreString(const String &string, int32_t x, int32_t y, uint8_t font)

3. 繪制字符串(居右)

int16_t drawRightString(const char *string, int32_t x, int32_t y, uint8_t font)
int16_t drawRightString(const String &string, int32_t x, int32_t y, uint8_t font)

4. 繪制字符

int16_t drawChar(uint16_t uniCode, int32_t x, int32_t y)
int16_t drawChar(uint16_t uniCode, int32_t x, int32_t y, uint8_t font)
void drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uint32_t bg, uint8_t size)

5. 繪制浮點(diǎn)數(shù)

int16_t TFT_eSPI::drawFloat(float floatNumber, uint8_t decimal, int32_t x, int32_t y)
int16_t TFT_eSPI::drawFloat(float floatNumber, uint8_t decimal, int32_t x, int32_t y, uint8_t font)
  tft.drawFloat(3.124, 4, 0,0,4);

6. 繪制數(shù)字

int16_t drawNumber(long intNumber, int32_t x, int32_t y)
int16_t drawNumber(long intNumber, int32_t x, int32_t y, uint8_t font)

四、 繪制幾何圖形

1. 畫(huà)點(diǎn)

void drawPixel(int32_t x, int32_t y, uint32_t color)

2.畫(huà)線

void drawLine(int32_t xs, int32_t ys, int32_t xe, int32_t ye, uint32_t color)

3.畫(huà)橫線(快速)

void drawFastHLine(int32_t x, int32_t y, int32_t w, uint32_t color)

4.畫(huà)豎線(快速)

void drawFastVLine(int32_t x, int32_t y, int32_t h, uint32_t color)

5. 畫(huà)空心圓

tft.drawCircle(100,100,50,TFT_RED);

6. 畫(huà)實(shí)心圓

void fillCircle(int32_t x, int32_t y, int32_t r, uint32_t color)
voidfillRect(int32_t x,int32_t y,int32_t w,int32_t h,uint32_t color)

7. 畫(huà)空心橢圓

tft.drawEllipse(100,100,100,60,TFT_GREENYELLOW);

8. 畫(huà)實(shí)心橢圓

void drawRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color)

9. 畫(huà)空心矩形

void drawRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color)

10. 畫(huà)實(shí)心矩形

void fillRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color)

11. 畫(huà)空心圓角矩形

void drawRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t radius, uint32_t color)

12. 畫(huà)實(shí)心圓角矩形

void fillRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t radius, uint32_t color)

13. 畫(huà)空心三角形

void drawTriangle(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, int32_t y3, uint32_t color)

14. 畫(huà)實(shí)心三角形

void fillTriangle(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, int32_t y3, uint32_t color)

五、圖片顯示相關(guān)

1. 顯示BMP圖片

void drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor)
void drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor, uint16_t bgcolor)

2. XBM

void drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor)
void drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor, uint16_t bgcolor)

3. 顯示圖片

void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint16_t *data)
void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data)
void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint16_t *data, uint16_t transparent)
void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data, uint16_t transparent)
void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data, bool bpp8 = true, uint16_t *cmap = (uint16_t *)nullptr)
void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data, uint8_t transparent, bool bpp8 = true, uint16_t *cmap = (uint16_t *)nullptr)

TFT_eSPI庫(kù)的動(dòng)畫(huà)顯示

繪制幾何圖形再擦除的方式繪制動(dòng)畫(huà)是非常好的方式, 它的:

優(yōu)點(diǎn)是: 1. 占用空間非常小 2. 動(dòng)畫(huà)清晰,充分利用每個(gè)像素點(diǎn) 3. 可以非常靈動(dòng). 4. 方便進(jìn)行微調(diào)

缺點(diǎn)是: 1. 容易閃屏 2. 一般不會(huì)太復(fù)雜 3.需要大量的計(jì)算

1. 讓一個(gè)正方形動(dòng)起來(lái)

思路: 繪制一個(gè)正方形, 然后每30ms 就擦除一部分正方形頂部的線,
#include <Arduino.h>
#include <TFT_eSPI.h> // Hardware-specific library
#include <SPI.h>

TFT_eSPI tft = TFT_eSPI(); // Invoke custom library

uint32_t updateTime = 0; // time for next update

int oldi = 0;
int i = 0;

void setup(void)
{
  tft.init();
  tft.setRotation(0);
  tft.fillScreen(TFT_BLACK);
  updateTime = millis(); // Next update time
  tft.fillRect(0, 0, 50, 50, TFT_RED);
}

void loop()
{
  if (updateTime <= millis())
  {
    updateTime = millis() + 30; //每30ms更新一次
    if (i < 350)
      i += 5;
    else
      oldi=i=-50;
    while (i != oldi)
    {
      tft.drawFastHLine(0, oldi, 50, TFT_BLACK);
      oldi++;
      tft.drawFastHLine(0, oldi + 50, 50, TFT_RED);
    }
  }
}

2. 畫(huà)一個(gè)帶動(dòng)畫(huà)的扇形

TFT_eSPI是沒(méi)有畫(huà)扇形的函數(shù)的, 畫(huà)扇形的思路是: 將扇形分解為1個(gè)個(gè)小三角形,每個(gè)三角形表示一弧度
#include <Arduino.h>
#include <TFT_eSPI.h> // Hardware-specific library
#include <SPI.h>

TFT_eSPI tft = TFT_eSPI(); // Invoke custom library

#define DEG2RAD 0.0174532925 //當(dāng)半徑為1時(shí), 1弧度對(duì)應(yīng)長(zhǎng)度, 我們可以理解為1個(gè)標(biāo)準(zhǔn)單位

byte inc = 0;
unsigned int col = 0;

void fillSegment(int x, int y, int start_angle, int sub_angle, int r, unsigned int colour);
void setup(void)
{
  Serial.begin(115200);
  tft.begin();
  tft.fillScreen(TFT_BLACK);
}

void loop()
{
  fillSegment(65, 120, 0, 60, 50, TFT_RED);
  tft.fillScreen(TFT_BLACK);
}
void fillSegment(int x, int y, int start_angle, int sub_angle, int r, unsigned int colour)
{
  // 計(jì)算初始的x1, y1
  float sx = cos((start_angle - 90) * DEG2RAD);
  float sy = sin((start_angle - 90) * DEG2RAD);
  uint16_t x1 = sx * r + x;
  uint16_t y1 = sy * r + y;
  for (int i = start_angle; i < start_angle + sub_angle; i++)
  {
    int x2 = cos((i + 1 - 90) * DEG2RAD) * r + x;
    int y2 = sin((i + 1 - 90) * DEG2RAD) * r + y;
    tft.fillTriangle(x1, y1, x2, y2, x, y, colour);
    x1 = x2;
    y1 = y2;
    //如果在這里加個(gè)delay會(huì)出現(xiàn)扇形動(dòng)畫(huà)
    delay(20);
  }
}

3. 畫(huà)一個(gè)帶動(dòng)畫(huà)的矩形進(jìn)度條文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-405582.html

#include <Arduino.h>
#include <TFT_eSPI.h> // Hardware-specific library
#include <SPI.h>

TFT_eSPI tft = TFT_eSPI(); // Invoke custom library

void fillSegment(int x,int y,unsigned int colour);


void setup(void)
{
  tft.init();
  tft.setRotation(0);
  tft.fillScreen(TFT_BLACK);

}

void loop()
{
  fillSegment(65, 120, TFT_RED);
  tft.fillScreen(TFT_BLACK);

}

void fillSegment(int x,int y,unsigned int colour)
{
  int y2 = 10;
  for (int i = 0; i <  +100; i++)
  {

    tft.fillRect(x, y,  i,  y2, colour);
    //如果在這里加個(gè)delay會(huì)出現(xiàn)扇形動(dòng)畫(huà)
    delay(20);
  }
}

到了這里,關(guān)于ESP32 Arduino 學(xué)習(xí)篇(五)TFT_eSPI庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • arduino-esp32:基于TFT-eSPI庫(kù)實(shí)現(xiàn)觸摸顯示屏

    arduino-esp32:基于TFT-eSPI庫(kù)實(shí)現(xiàn)觸摸顯示屏

    在arduino的IDE上已經(jīng)搭建好了ESP32環(huán)境的話,寫(xiě)寫(xiě)小應(yīng)用的話還是很簡(jiǎn)單的,畢竟有這么多優(yōu)秀的庫(kù)。 之前用自己買(mǎi)的TFT屏試了一下TFT-eSPI庫(kù)的驅(qū)動(dòng)效果,顯示效果挺好的,但是觸摸一直沒(méi)用上。最近有空了弄了一下。 我的屏幕是2.2寸/2.4/2.8/3.2/3.5/4.0寸TFT觸摸彩色SPI串口液晶屏

    2023年04月09日
    瀏覽(52)
  • ESP8266網(wǎng)絡(luò)相框采用TFT_eSPI庫(kù)TJpg_Decoder庫(kù)mixly庫(kù)UDP庫(kù)實(shí)現(xiàn)圖片傳送

    ESP8266網(wǎng)絡(luò)相框采用TFT_eSPI庫(kù)TJpg_Decoder庫(kù)mixly庫(kù)UDP庫(kù)實(shí)現(xiàn)圖片傳送

    用ESP8266和TFT_ESPI模塊來(lái)顯示圖片數(shù)據(jù)。具體來(lái)說(shuō),我們將使用ILI9431顯示器作為顯示設(shè)備,并通過(guò)UDP協(xié)議將圖片數(shù)據(jù)從發(fā)送端傳輸?shù)紼SP8266。最后,我們將解析這些數(shù)據(jù)并在TFT屏幕上顯示出來(lái)。在這個(gè)過(guò)程中,我們將面臨一些編程挑戰(zhàn),但我們將盡力克服它們。 首先,我們需要

    2024年01月25日
    瀏覽(17)
  • TFT_eSPI使用

    TFT_eSPI使用

    參考:TFT-eSPI入門(mén)使用教程 Arduino開(kāi)發(fā)-TFT_eSPI庫(kù)學(xué)習(xí) 使用VS Code 搭建 platformio 平臺(tái) 基于arduino的ESP32 學(xué)習(xí)筆記(二) TFT_eSPI和LVGL庫(kù)使用筆記 https://b23.tv/VVhmXSp 硬件及軟件環(huán)境 開(kāi)發(fā)板:ESP32-S3 屏驅(qū)動(dòng)是:ST7789_DRIVER 開(kāi)發(fā)環(huán)境:VS Code + PlatformIO 搭建開(kāi)發(fā)環(huán)境教程:使用VS Code 搭建

    2024年02月07日
    瀏覽(17)
  • TFT屏幕在arduino (esp 32)下的驅(qū)動(dòng),漢字顯示和字庫(kù)比較

    TFT屏幕在arduino (esp 32)下的驅(qū)動(dòng),漢字顯示和字庫(kù)比較

    絕大多數(shù)的tft屏幕在esp32 下都可以被 TFT_eSPI 驅(qū)動(dòng)顯示,以下清單中的驅(qū)動(dòng)模塊都可以用tft_espi來(lái)顯示: 上面的驅(qū)動(dòng)表基本囊括了主要的TFT顯示模塊,所以除非不在這個(gè)清單中,所以別找第三方驅(qū)動(dòng)了。 二、TFT模塊的漢字顯示方式和字庫(kù)調(diào)用 在TFT_eSPI 的官方系統(tǒng)中提供了pro

    2024年02月07日
    瀏覽(31)
  • Arduino+esp8266+1.3寸TFT屏(st7789驅(qū)動(dòng))顯示圖片教程

    Arduino+esp8266+1.3寸TFT屏(st7789驅(qū)動(dòng))顯示圖片教程

    Arduino下載TFT_eSPI和JPEGDecoder庫(kù) 步驟:項(xiàng)目-加載庫(kù)-管理庫(kù) 修改User_Setup.h 驅(qū)動(dòng) #define ST7789_DRIVER 屏尺寸(我的是240*240) #define TFT_WIDTH 240 #define TFT_HEIGHT 240 連接引腳 #define TFT_CS PIN_D8 // Chip select control pin D8 #define TFT_DC PIN_D3 // Data Command control pin #define TFT_RST PIN_D4 // Reset pin (could co

    2023年04月25日
    瀏覽(23)
  • 零基礎(chǔ)學(xué)習(xí)MSP430F552LP開(kāi)發(fā)板,學(xué)習(xí)前期準(zhǔn)備,Code Composer Studio(CCS)軟件的安裝

    零基礎(chǔ)學(xué)習(xí)MSP430F552LP開(kāi)發(fā)板,學(xué)習(xí)前期準(zhǔn)備,Code Composer Studio(CCS)軟件的安裝

    零基礎(chǔ)學(xué)習(xí)MSP430F552LP開(kāi)發(fā)板 一、前言 零基礎(chǔ)學(xué)習(xí)MSP430F552LP開(kāi)發(fā)板,為電子設(shè)計(jì)競(jìng)賽做準(zhǔn)備以及學(xué)好這一款芯片。 在選擇比賽題目時(shí),發(fā)現(xiàn)有的題目時(shí)規(guī)定使用ti的芯片作為控制MCU。這時(shí)我們就必要學(xué)會(huì)使用MSP430類的芯片了,這里開(kāi)始學(xué)習(xí)的是MSP430F5529LP。樣品如下圖: 二、

    2024年02月16日
    瀏覽(22)
  • Arduino離線安裝esp32/esp8266

    Arduino離線安裝esp32/esp8266

    使用本教程所示的安裝方法,雙擊安裝包的傻瓜式操作,不用進(jìn)入文件夾修改,不用添加網(wǎng)站地址,免去網(wǎng)絡(luò)帶來(lái)的煩惱。安裝完成后直接使用。 官網(wǎng)地址:Software | Arduino 打開(kāi)鏈接后如圖? 點(diǎn)擊紅色框內(nèi)以后跳轉(zhuǎn)到此界面 再次選擇紅框后下載 打開(kāi)安裝包一直下一步就好 打

    2023年04月13日
    瀏覽(35)
  • ESP32學(xué)習(xí)準(zhǔn)備——燒錄MicroPython固件

    ESP32學(xué)習(xí)準(zhǔn)備——燒錄MicroPython固件

    固件,就是文件,固化在存儲(chǔ)介質(zhì)上的文件,而文件,其實(shí)就是數(shù)據(jù)。 燒寫(xiě),就是寫(xiě)數(shù)據(jù),把文件(固件/數(shù)據(jù))寫(xiě)到存儲(chǔ)介質(zhì)(Nand Flash, Nor Flash等)上。 當(dāng)把這些固件寫(xiě)到儲(chǔ)存器中后,板子下次啟動(dòng)的時(shí)候,直接從這些儲(chǔ)存器中找到這些文件,嵌入式系統(tǒng)就能夠直接跑起來(lái)

    2024年02月12日
    瀏覽(13)
  • ESP32 Arduino學(xué)習(xí)篇(二)中斷

    ESP32 Arduino學(xué)習(xí)篇(二)中斷

    單片機(jī)最為核心的內(nèi)容,應(yīng)該就是中斷了吧。相較于其他的單片機(jī)而言,ESP32的外部中斷是十分強(qiáng)大的,因?yàn)槠涿總€(gè)引腳均可以設(shè)置為外部中斷的觸發(fā)引腳。 ESP32 Arduino 有以下觸發(fā)方式: LOW 低電平觸發(fā) CHANGE 電平變化 RISING 上升沿觸發(fā) FALLING 下降沿觸發(fā) HIGH 高電平觸發(fā) 1. 開(kāi)啟

    2024年02月16日
    瀏覽(23)
  • ESP32 Arduino學(xué)習(xí)篇 (三) 藍(lán)牙

    ESP32 Arduino學(xué)習(xí)篇 (三) 藍(lán)牙

    經(jīng)典藍(lán)牙我們一般說(shuō)的是BT,低功耗藍(lán)牙我們一般說(shuō)成BLE。當(dāng)設(shè)備支持藍(lán)牙4.0時(shí),還得進(jìn)一步確認(rèn)設(shè)備是支持BT單模、BLE單模還是BT和BLE都支持的雙模。 低功耗藍(lán)牙 (BLE): 支持藍(lán)牙協(xié)議4.0或更高的模塊。主打低功耗,多用于物聯(lián)網(wǎng)類型。 經(jīng)典藍(lán)牙( BT): 指支持藍(lán)牙協(xié)議在4.0以

    2024年02月03日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包