一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Adafruit GFX圖形庫(kù)的使用

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-27 16:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

Adafruit GFX圖形庫(kù)的使用

用于ArduinoAdafruit_GFX庫(kù)為我們所有的LCD和OLED顯示器提供了通用語(yǔ)法和圖形功能集。這使Arduino草圖可以輕松地在顯示類型之間進(jìn)行調(diào)整,而不必花太多精力……而且任何新功能,性能改進(jìn)和錯(cuò)誤修復(fù)將立即應(yīng)用于我們完整的彩色顯示屏產(chǎn)品中。

可以使用 Arduino Library Manager 安裝Adafruit_GFX 庫(kù),這是首選的現(xiàn)代方法。從Arduino的“草圖”菜單中,選擇“包含庫(kù)”,然后選擇“管理庫(kù)…”

在搜索字段中鍵入“ gfx”以快速找到它:

在這里的同時(shí),還要尋找并安裝 Adafruit_ZeroDMA 庫(kù)。

Adafruit_GFX庫(kù)始終與每種特定顯示類型所獨(dú)有的附加庫(kù)一起使用-例如,ST7735 1.8英寸彩色LCD需要安裝Adafruit_GFX,Adafruit_ZeroDMA 和 Adafruit_ST7735庫(kù),以下庫(kù)現(xiàn)在以這種方式運(yùn)行:

RGBmatrixPanel,用于我們的16x32和32x32 RGB LED矩陣面板。

Adafruit_TFTLCD,用于2.8“ TFT LCD觸摸屏突破和Arduino的TFT觸摸屏。

Adafruit_HX8340B,用于我們的帶有microSD的2.2” TFT顯示器。

Adafruit_ST7735,用于o具有microSD的1.8英寸TFT顯示屏。

Adafruit_PCD8544,用于Nokia 5110/3310單色LCD。

Adafruit-Graphic-VFD-Display-Library,用于我們的128x64圖形VFD。

適用于Arduino的Adafruit-SSD1331-OLED-Driver-Library-for-Arduino,帶有microSD固定器。

用于單色128x64和128x32 OLED的Adafruit_SSD1306。

這些庫(kù)是用C ++ for Arduino編寫(xiě)的,但是可以通過(guò)重寫(xiě)底層的引腳訪問(wèn)功能輕松地移植到任何微控制器

舊方法

舊版本的Arduino IDE軟件需要手動(dòng)安裝庫(kù); Arduino Library Manager尚不存在。如果使用早期版本的Arduino軟件,這可能是升級(jí)的好時(shí)機(jī)。否則,本教程將說(shuō)明如何安裝和使用Arduino庫(kù)。以下是直接下載GFX和ZeroDMA庫(kù)的鏈接(使用上面的鏈接獲取對(duì)應(yīng)的特定于顯示的庫(kù)):

下載Adafruit_GFX庫(kù)

下載Adafruit_ZeroDMA庫(kù)

坐標(biāo)系和單位

像素(像素,包括數(shù)字圖像的像素)通過(guò)其水平(X)和垂直(Y)坐標(biāo)進(jìn)行尋址。坐標(biāo)系將原點(diǎn)(0,0)放在左上角,正X向右增加,正Y向下增加。相對(duì)于標(biāo)準(zhǔn)的笛卡爾坐標(biāo)系來(lái)說(shuō),這是顛倒的,但是在許多計(jì)算機(jī)圖形系統(tǒng)中已經(jīng)建立了慣例(這回溯到光柵掃描CRT圖形的時(shí)代,從上到下都是如此)。要使用高的“人像”布局而不是寬的“橫向”格式,或者如果物理限制決定了顯示器在外殼中的方向,則還可以應(yīng)用四個(gè)旋轉(zhuǎn)設(shè)置之一,指示顯示器的哪個(gè)角代表左上角。

與數(shù)學(xué)笛卡爾坐標(biāo)系不同,此處的點(diǎn)具有維度-它們始終是一個(gè)完整的整數(shù)像素,寬且高。

坐標(biāo)始終以像素為單位表示;現(xiàn)實(shí)世界中沒(méi)有隱含的比例尺(例如毫米或英寸),顯示的圖形的尺寸將取決于特定顯示器的點(diǎn)距或像素密度。如果您的目標(biāo)是真實(shí)尺寸,則需要縮放坐標(biāo)以適合。點(diǎn)間距通??梢栽谠O(shè)備數(shù)據(jù)表中找到,或者通過(guò)測(cè)量屏幕寬度并用該測(cè)量結(jié)果除以像素?cái)?shù)來(lái)找到。

對(duì)于有顏色的顯示器,顏色表示為無(wú)符號(hào)的16位值。有些顯示器在物理上可能比這更多或更少,但是該庫(kù)使用16位值運(yùn)行……這些對(duì)于Arduino來(lái)說(shuō)很容易使用,同時(shí)還為所有不同的顯示器提供一致的數(shù)據(jù)類型。紅色,綠色和藍(lán)色等原色成分全部“打包”為單個(gè)16位變量,其中最高5位傳達(dá)紅色,中間6位傳達(dá)綠色,最低5位傳達(dá)藍(lán)色。這多余的部分分配給綠色,因?yàn)槲覀兊难劬?duì)綠光最敏感。科學(xué)!

對(duì)于最常見(jiàn)的原色和副色,我們有一個(gè)方便的備忘單您可以將其包含在自己的代碼中。當(dāng)然,您可以選擇65,536種不同的顏色中的任何一種,但是開(kāi)始時(shí)此基本列表可能是最簡(jiǎn)單的:

下載:文件

復(fù)制代碼

// Color definitions

#define BLACK 0x0000

#define BLUE 0x001F

#define RED 0xF800

#define GREEN 0x07E0

#define CYAN 0x07FF

#define MAGENTA 0xF81F

#define YELLOW 0xFFE0

#define WHITE 0xFFFF // Color definitions

#define BLACK 0x0000

#define BLUE 0x001F

#define RED 0xF800

#define GREEN 0x07E0

#define CYAN 0x07FF

#define MAGENTA 0xF81F

#define YELLOW 0xFFE0

#define WHITE 0xFFFF

對(duì)于單色(單色)顯示器,顏色總是指定為simple1(設(shè)置)或0(透明)。設(shè)置/清除的語(yǔ)義特定于顯示器的類型:對(duì)于類似發(fā)光的OLED顯示器,“設(shè)置”像素會(huì)變亮,而對(duì)于反射LCD顯示器,“設(shè)置”像素通常會(huì)變暗??赡軙?huì)有例外,但是通常您可以依靠on0(clear)來(lái)表示新初始化的顯示器的默認(rèn)背景狀態(tài),無(wú)論結(jié)果如何。

圖形基元

每個(gè)設(shè)備特定的顯示庫(kù)將具有其自己的構(gòu)造函數(shù)和初始化函數(shù)。這些內(nèi)容在每種顯示類型的單獨(dú)教程中都有介紹,或者在特定的庫(kù)頭文件中經(jīng)??梢?jiàn)。本教程的其余部分介紹了不管顯示類型如何都可以使用的通用圖形函數(shù)。

下面的函數(shù)描述僅是 prototypes -假設(shè)顯示對(duì)象被聲明并初始化為特定于設(shè)備的庫(kù)需要。查看每個(gè)庫(kù)的示例代碼,以實(shí)際使用它。例如,在showprint(1234.56)中,您的實(shí)際代碼會(huì)將對(duì)象名稱放在該名稱之前,例如它可能會(huì)讀到screen.print(1234.56)(如果已使用名稱屏幕聲明了顯示對(duì)象)。

繪制像素(點(diǎn))首先是最基本的像素推動(dòng)器。您可以使用X,Y坐標(biāo)和顏色來(lái)調(diào)用它,它會(huì)形成一個(gè)點(diǎn):

下載:文件

復(fù)制代碼

void drawPixel(uint16_t x, uint16_t y, uint16_t color); void drawPixel(uint16_t x, uint16_t y, uint16_t color);

繪制線條

您還可以繪制帶有起點(diǎn)和終點(diǎn)以及顏色的線條:

下載:文件

復(fù)制代碼

void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color); void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color);

對(duì)于水平或垂直線條,有優(yōu)化的線條繪制功能可避免角度計(jì)算:

下載:文件

復(fù)制代碼

void drawFastVLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color);

void drawFastHLine(uint8_t x0, uint8_t y0, uint8_t length, uint16_t color); void drawFastVLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color);

void drawFastHLine(uint8_t x0, uint8_t y0, uint8_t length, uint16_t color);

矩形

接下來(lái),可以使用以下步驟繪制和填充矩形和正方形。每個(gè)矩形均接受X,Y對(duì),矩形的寬度和高度(以像素為單位)以及color.drawRect()表示矩形的框(輪廓),內(nèi)部不受影響,而fillRect ()使用給定的顏色填充整個(gè)區(qū)域:

下載:文件

復(fù)制代碼

void drawRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);

void fillRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color); void drawRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);

void fillRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);

要?jiǎng)?chuàng)建輪廓鮮明的實(shí)心矩形,請(qǐng)先使用fillRect(),然后在其上使用drawRect()。

同樣,對(duì)于圓,您可以繪制和填充。每個(gè)函數(shù)均接受X,Y對(duì)作為中心點(diǎn),半徑(以像素為單位)和顏色:

下載:文件

復(fù)制代碼

void drawCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);

void fillCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color); void drawCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);

void fillCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);

圓角矩形

對(duì)于具有圓角的矩形,繪制和填充功能均可用。每個(gè)都以X,Y,寬度和高度(就像普通矩形一樣)開(kāi)頭,然后是拐角半徑(以像素為單位),最后是顏色值:

下載:文件

復(fù)制代碼

void drawRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color);

void fillRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color); void drawRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color);

void fillRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color);

額外的技巧:由于圓函數(shù)總是相對(duì)于中心像素繪制的,因此生成的圓直徑將始終是奇數(shù)個(gè)像素。如果需要一個(gè)偶數(shù)大小的圓(會(huì)將中心點(diǎn)放置在像素之間),則可以使用以下一個(gè)圓角矩形函數(shù)來(lái)實(shí)現(xiàn):傳遞相同的寬度和高度(即偶數(shù)),并拐角半徑恰好是此值的一半。

三角形

對(duì)于三角形,再次具有繪制和填充功能。每個(gè)參數(shù)都需要完整的七個(gè)參數(shù):定義三角形的三個(gè)角點(diǎn)的X,Y坐標(biāo),然后是顏色:

下載:文件

復(fù)制代碼

void drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);

void fillTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color); void drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);

void fillTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);

字符和文本

有兩種基本的字符串繪制過(guò)程可用于添加文本。第一個(gè)僅用于單個(gè)字符。您可以將此字符放置在任何位置,可以使用任何顏色。只能使用一種字體(以節(jié)省空間),它的大小為5x8像素,但可以傳遞一個(gè)可選的size參數(shù),該參數(shù)將字體按此因子縮放(例如size = 2將以每個(gè)字符10x16像素呈現(xiàn)文本)。有點(diǎn)塊狀,但只有一種字體有助于減小程序的大小。

下載:文件

復(fù)制代碼

void drawChar(uint16_t x, uint16_t y, char c, uint16_t color, uint16_t bg, uint8_t size); void drawChar(uint16_t x, uint16_t y, char c, uint16_t color, uint16_t bg, uint8_t size);

文本非常靈活,但操作方式略有不同。無(wú)需執(zhí)行一個(gè)過(guò)程,而是在單獨(dú)的函數(shù)中設(shè)置文本大小,顏色和位置,然后使用print()函數(shù)-這使它變得容易,并提供了熟悉的Serial.print()的所有相同的字符串和數(shù)字格式設(shè)置功能。 )功能!

下載:文件

復(fù)制代碼

void setCursor(uint16_t x0, uint16_t y0);

void setTextColor(uint16_t color);

void setTextColor(uint16_t color, uint16_t backgroundcolor);

void setTextSize(uint8_t size);

void setTextWrap(boolean w); void setCursor(uint16_t x0, uint16_t y0);

void setTextColor(uint16_t color);

void setTextColor(uint16_t color, uint16_t backgroundcolor);

void setTextSize(uint8_t size);

void setTextWrap(boolean w);

從setCursor(x,y)開(kāi)始,它將隨便放置文本的左上角。最初將其設(shè)置為(0,0)(屏幕的左上角)。然后使用setTextColor(color)設(shè)置文本顏色-默認(rèn)情況下為白色。文本通常以“清晰”的形式繪制-每個(gè)字符的開(kāi)放部分顯示原始背景內(nèi)容,但是如果您希望文本遮擋其下方內(nèi)容,則可以將背景色指定為可選的第二個(gè)參數(shù)tosetTextColor()。最后,setTextSize(size)將文本的比例乘以給定的整數(shù)因子。在下面您可以看到縮放比例分別為1(默認(rèn)值),2和3。在較大的尺寸下,它看起來(lái)像塊狀的,因?yàn)槲覀冎皇褂靡环N簡(jiǎn)單的字體來(lái)提供該庫(kù),以節(jié)省空間。

請(qǐng)注意,自定義字體不支持文本背景色。對(duì)于這些,您將需要確定文本范圍并在繪制文本之前顯式繪制一個(gè)填充的矩形。

設(shè)置完所有內(nèi)容后,就可以像使用Serial一樣使用print()或println()-例如,要打印字符串,請(qǐng)使用print(“ Hello world”)-這是上面圖像的第一行。您還可以將print()用于數(shù)字和變量-上面的第二行是print(1234.56)的輸出,第三行是print(0xDEADBEEF,HEX)。

默認(rèn)情況下,長(zhǎng)文本行設(shè)置為自動(dòng)“包裝”回最左側(cè)的列。要覆蓋此行為(因此文本將在顯示的右側(cè)溢出,對(duì)滾動(dòng)字幕效果很有用),請(qǐng)使用setTextWrap(false)。可以使用setTextWrap(true)恢復(fù)正常的換行行為。

有關(guān)最新GFX庫(kù)中的其他文本功能,請(qǐng)參見(jiàn)“使用字體”頁(yè)面。

位圖

您可以繪制小的單色(單色)位圖,非常適合精靈和其他迷你動(dòng)畫(huà)或圖標(biāo):

下載:文件

復(fù)制代碼

void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, uint16_t color); void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, uint16_t color);

這會(huì)將連續(xù)的位塊發(fā)送到顯示器,其中每個(gè)“ 1”位將相應(yīng)的像素設(shè)置為“顏色”,而每個(gè)“ 0”位被跳過(guò)。 x,y是繪制位圖的左上角,w,h是寬度和高度(以像素為單位)。

位圖數(shù)據(jù)必須使用以下命令保存在程序存儲(chǔ)器中PROGMEM指令。這是一個(gè)有點(diǎn)高級(jí)的功能,建議初學(xué)者稍后再講。有關(guān)介紹,請(qǐng)參見(jiàn)有關(guān)PROGMEM使用的Arduino教程。

這是一個(gè)方便的Web工具,用于生成位圖-》內(nèi)存映射

清除或填充屏幕

fillScreen()函數(shù)會(huì)將整個(gè)顯示設(shè)置為給定的顏色,從而擦除所有現(xiàn)有內(nèi)容:

下載:文件

復(fù)制代碼

void fillScreen(uint16_t color); void fillScreen(uint16_t color);

旋轉(zhuǎn)顯示

您還可以旋轉(zhuǎn)圖形。請(qǐng)注意,這將不旋轉(zhuǎn)您已經(jīng)繪制的內(nèi)容,但是它將更改任何新圖形的坐標(biāo)系。如果您必須將板子或顯示器側(cè)向或上下翻轉(zhuǎn)以適合特定的機(jī)箱,這將非常方便。在大多數(shù)情況下,只需在setup()內(nèi)部執(zhí)行一次即可。

我們只能旋轉(zhuǎn)0、90、180或270度-硬件上無(wú)法進(jìn)行其他任何操作,因此Arduino難以計(jì)算軟件

下載:文件

復(fù)制代碼

void setRotation(uint8_t rotation); void setRotation(uint8_t rotation);

旋轉(zhuǎn)參數(shù)可以是0、1、2或3。對(duì)于屬于Arduino屏蔽的顯示器,旋轉(zhuǎn)值0會(huì)將顯示設(shè)置為 portrait (高)模式,USB插孔位于右上方。旋轉(zhuǎn)值2也是縱向模式,USB插孔位于左下方。旋轉(zhuǎn)1是 landscape (寬屏)模式,USB插孔在右下方,而旋轉(zhuǎn)3也是水平,但USB插孔在左上方。

其他顯示器,請(qǐng)嘗試所有4次旋轉(zhuǎn)以弄清它們最終如何旋轉(zhuǎn),因?yàn)閷?duì)齊方式會(huì)因每個(gè)顯示器而異,通常旋轉(zhuǎn)會(huì)逆時(shí)針移動(dòng)

旋轉(zhuǎn)時(shí),原點(diǎn)(0,0)發(fā)生了變化-想法是應(yīng)該將其布置在顯示器的左上方,以使其他圖形功能具有一致的意義(并與上面的所有功能描述相匹配)。

如果您需要引用屏幕的大?。▽⒃诳v向和橫向模式之間更改),使用width()和height()。

下載:文件

復(fù)制代碼

uint16_t width();

uint16_t height(); uint16_t width();

uint16_t height();

每個(gè)返回對(duì)應(yīng)軸的尺寸(以像素為單位),已針對(duì)顯示器的當(dāng)前旋轉(zhuǎn)設(shè)置進(jìn)行調(diào)整。

使用字體

較新版本的Adafruit GFX庫(kù)提供了除了內(nèi)置一個(gè)標(biāo)準(zhǔn)的固定大小和等寬字體外還可以使用其他字體的能力。包括在內(nèi),還有添加新功能的能力。

所包含的字體源自GNU FreeFontproject。共有三張面孔:“塞里夫(Serif)”(讓人聯(lián)想到時(shí)代的新羅馬時(shí)代),“桑斯”(Sans)(讓人聯(lián)想到Helvetica或Arial)和“莫諾”(Mono)(讓人聯(lián)想到信使)。每種都有幾種樣式(粗體,斜體等)和尺寸。包含的字體采用位圖格式,而不是可縮放的矢量,因?yàn)樗枰谛⌒臀⒖刂破鞯南拗苾?nèi)工作。

位于Adafruit_GFX內(nèi)“ Fonts”文件夾內(nèi),包括的文件(截至撰寫(xiě)本文時(shí))為:

下載:文件

復(fù)制代碼

FreeMono12pt7b.h FreeSansBoldOblique12pt7b.h

FreeMono18pt7b.h FreeSansBoldOblique18pt7b.h

FreeMono24pt7b.h FreeSansBoldOblique24pt7b.h

FreeMono9pt7b.h FreeSansBoldOblique9pt7b.h

FreeMonoBold12pt7b.h FreeSansOblique12pt7b.h

FreeMonoBold18pt7b.h FreeSansOblique18pt7b.h

FreeMonoBold24pt7b.h FreeSansOblique24pt7b.h

FreeMonoBold9pt7b.h FreeSansOblique9pt7b.h

FreeMonoBoldOblique12pt7b.h FreeSerif12pt7b.h

FreeMonoBoldOblique18pt7b.h FreeSerif18pt7b.h

FreeMonoBoldOblique24pt7b.h FreeSerif24pt7b.h

FreeMonoBoldOblique9pt7b.h FreeSerif9pt7b.h

FreeMonoOblique12pt7b.h FreeSerifBold12pt7b.h

FreeMonoOblique18pt7b.h FreeSerifBold18pt7b.h

FreeMonoOblique24pt7b.h FreeSerifBold24pt7b.h

FreeMonoOblique9pt7b.h FreeSerifBold9pt7b.h

FreeSans12pt7b.h FreeSerifBoldItalic12pt7b.h

FreeSans18pt7b.h FreeSerifBoldItalic18pt7b.h

FreeSans24pt7b.h FreeSerifBoldItalic24pt7b.h

FreeSans9pt7b.h FreeSerifBoldItalic9pt7b.h

FreeSansBold12pt7b.h FreeSerifItalic12pt7b.h

FreeSansBold18pt7b.h FreeSerifItalic18pt7b.h

FreeSansBold24pt7b.h FreeSerifItalic24pt7b.h

FreeSansBold9pt7b.h FreeSerifItalic9pt7b.h FreeMono12pt7b.h FreeSansBoldOblique12pt7b.h

FreeMono18pt7b.h FreeSansBoldOblique18pt7b.h

FreeMono24pt7b.h FreeSansBoldOblique24pt7b.h

FreeMono9pt7b.h FreeSansBoldOblique9pt7b.h

FreeMonoBold12pt7b.h FreeSansOblique12pt7b.h

FreeMonoBold18pt7b.h FreeSansOblique18pt7b.h

FreeMonoBold24pt7b.h FreeSansOblique24pt7b.h

FreeMonoBold9pt7b.h FreeSansOblique9pt7b.h

FreeMonoBoldOblique12pt7b.h FreeSerif12pt7b.h

FreeMonoBoldOblique18pt7b.h FreeSerif18pt7b.h

FreeMonoBoldOblique24pt7b.h FreeSerif24pt7b.h

FreeMonoBoldOblique9pt7b.h FreeSerif9pt7b.h

FreeMonoOblique12pt7b.h FreeSerifBold12pt7b.h

FreeMonoOblique18pt7b.h FreeSerifBold18pt7b.h

FreeMonoOblique24pt7b.h FreeSerifBold24pt7b.h

FreeMonoOblique9pt7b.h FreeSerifBold9pt7b.h

FreeSans12pt7b.h FreeSerifBoldItalic12pt7b.h

FreeSans18pt7b.h FreeSerifBoldItalic18pt7b.h

FreeSans24pt7b.h FreeSerifBoldItalic24pt7b.h

FreeSans9pt7b.h FreeSerifBoldItalic9pt7b.h

FreeSansBold12pt7b.h FreeSerifItalic12pt7b.h

FreeSansBold18pt7b.h FreeSerifItalic18pt7b.h

FreeSansBold24pt7b.h FreeSerifItalic24pt7b.h

FreeSansBold9pt7b.h FreeSerifItalic9pt7b.h

每個(gè)文件名均以面部名稱開(kāi)頭(“ FreeMono ”,“ FreeSerif”等),然后是樣式(“ Bold”,“ Oblique”,none等),字體大小(以磅為單位)(目前提供9、12、18和24磅)和“ 7b”表示它們包含7位字符(ASCII碼“”至“?”); 尚未提供8位字體(支持符號(hào)和/或國(guó)際字符),但可能稍后發(fā)布。

在Arduino草圖中使用GFX字體

在#包含Adafruit_GFX和特定于顯示的庫(kù)之后,包括字體文件( s)您打算在草圖中使用。例如:

下載:文件

復(fù)制代碼

#include // Core graphics library

#include // Hardware-specific library

#include

#include #include // Core graphics library

#include // Hardware-specific library

#include

#include

每種字體占用程序空間;較大的字體通常需要更多空間。這是一種有限的資源(在Arduino Uno上最大為32K,用于字體數(shù)據(jù)和所有您的素描代碼),因此請(qǐng)謹(jǐn)慎選擇。太大,代碼將拒絕編譯(或在某些情況下,可能會(huì)編譯,但隨后將不會(huì)上傳到開(kāi)發(fā)板上)。如果發(fā)生這種情況,請(qǐng)使用較少或較小的字體,或使用標(biāo)準(zhǔn)的內(nèi)置字體。

在這些.h文件中有幾種數(shù)據(jù)結(jié)構(gòu),包括一種主要的字體結(jié)構(gòu),它將通常與字體文件具有相同的名稱(減去.h)。要為后續(xù)圖形操作選擇字體,請(qǐng)使用setFont()函數(shù),并傳遞此結(jié)構(gòu)的地址,例如:

下載:文件

復(fù)制代碼

tft.setFont(&FreeMonoBoldOblique12pt7b); tft.setFont(&FreeMonoBoldOblique12pt7b);

后續(xù)調(diào)用tft.print()現(xiàn)在將使用此字體。以前與內(nèi)置字體(顏色,大小等)一起使用的大多數(shù)其他屬性在這里的工作方式都與此類似。

要返回標(biāo)準(zhǔn)的固定大小字體,請(qǐng)調(diào)用setFont(),傳遞NULL或沒(méi)有參數(shù):

下載:文件

復(fù)制代碼

tft.setFont(); tft.setFont();

這些新字體的某些文本屬性的行為略有不同。不想破壞與現(xiàn)有代碼的兼容性,“經(jīng)典”字體仍然像以前一樣工作。

例如,而使用經(jīng)典字體打印時(shí)的光標(biāo)位置標(biāo)識(shí)了左上角《字符單元格的/em》,使用新字體,光標(biāo)位置指示后續(xù)文本的基線(最底行)。字符的大小和寬度可能有所不同,并且不一定從確切的光標(biāo)列開(kāi)始(如下所示,此字符從光標(biāo)的左開(kāi)始一個(gè)像素,但其他字符可能位于光標(biāo)的右上方

在內(nèi)置字體和自定義字體之間切換時(shí),該庫(kù)將根據(jù)需要自動(dòng)將光標(biāo)位置上下移動(dòng)6個(gè)像素,以沿著相同的基線繼續(xù)。

一個(gè)“陷阱”注意使用新字體:沒(méi)有“背景”顏色選項(xiàng)…您可以設(shè)置此值,但是它將被忽略。

背景顏色功能通常與“經(jīng)典”字體一起使用,以用新數(shù)據(jù)覆蓋舊屏幕內(nèi)容。這僅是有效的,因?yàn)檫@些字符大小一致。使用大小可變(且可能重疊)的字符按比例隔開(kāi)的字體不是明智的選擇。

要在使用自定義字體時(shí)替換以前繪制的測(cè)試,請(qǐng)使用getTextBounds()函數(shù)確定包含字符串的最小矩形,使用fillRect()擦除區(qū)域,然后繪制新文本。

下載:文件

復(fù)制代碼

int16_t x1, y1;

uint16_t w, h;

tft.getTextBounds(string, x, y, &x1, &y1, &w, &h); int16_t x1, y1;

uint16_t w, h;

tft.getTextBounds(string, x, y, &x1, &y1, &w, &h);

getTextBounds需要一個(gè)字符串,即起始光標(biāo)X&Y位置(當(dāng)前光標(biāo)位置將不會(huì)更改),以及兩個(gè)有符號(hào)和兩個(gè)無(wú)符號(hào)16位整數(shù)的地址。然后,這最后四個(gè)值將包含該文本所覆蓋區(qū)域的左上角以及寬度和高度-然后可以將這些值直接作為參數(shù)傳遞給fillRect()。

不幸的是,這將“閃爍”擦除和重畫(huà)時(shí),文字是不可避免的。在同一遍中繪制背景像素的舊方案只會(huì)帶來(lái)新的問(wèn)題。

添加新字體

如果您要?jiǎng)?chuàng)建庫(kù)中未包含的新字體大小,或改編全新字體,我們提供了一個(gè)命令行工具( “ fontconvert”文件夾)。它可以在許多類似Linux或UNIX的系統(tǒng)上運(yùn)行(Raspberry Pi,Mac OS X,也許還有Windows的Cygwin等)。

構(gòu)建此工具需要gcc編譯器和FreeTypelibrary。大多數(shù)Linux發(fā)行版默認(rèn)都包含這兩個(gè)版本。對(duì)于其他用戶,您可能需要安裝開(kāi)發(fā)人員工具,并從源代碼下載并構(gòu)建FreeType。然后在調(diào)用“ make”之前,編輯Makefile以使其與您的設(shè)置匹配。

fontconvert 至少需要兩個(gè)參數(shù):字體文件名(例如可縮放TrueType矢量字體)和大?。ㄒ园鯙閱挝唬?2磅= 1英寸;代碼假定屏幕分辨率類似于Adafruit 2.8英寸TFT顯示屏)。輸出應(yīng)重定向到.h文件。..您可以使用任何名稱就像,但我會(huì)盡量描述一下:

下載:文件

復(fù)制代碼

。/fontconvert myfont.ttf 12 》 myfont12pt7b.h 。/fontconvert myfont.ttf 12 》 myfont12pt7b.h

GNU FreeFont文件不包含在庫(kù)中,但易于下載,或者您可以轉(zhuǎn)換大多數(shù)喜歡的字體

在此文件中分配給字體結(jié)構(gòu)的名稱是基于輸入文件名和字體大小,而不是輸出。這就是為什么我建議使用描述性的文件名,其中包含字體基本名稱,大小和“ 7p”,然后是.hfilename和字體結(jié)構(gòu)名稱可以匹配。

可以將生成的.h文件復(fù)制到Adafruit_GFX/Fonts文件夾中,也可以使用Sketch→Add File…命令將其作為Arduino草圖中的新選項(xiàng)卡導(dǎo)入。

p》

如果在Fonts文件夾中,則在#包括文件時(shí)使用以下語(yǔ)法:

下載:文件

復(fù)制代碼

#include #include

如果草圖中的選項(xiàng)卡,請(qǐng)使用以下語(yǔ)法:

下載:文件

復(fù)制代碼

#include “myfont12pt7b.h” #include “myfont12pt7b.h”

加載圖像

從 SD卡(或Adafruit“ Express”板上的閃存芯片)加載.BMP圖像是我們大多數(shù)彩色顯示器的一種選擇。..盡管它不是Adafruit_GFX內(nèi)置的,并且必須單獨(dú)安裝。

Adafruit_ImageReader 庫(kù)可以完成此任務(wù)??梢酝ㄟ^(guò)Arduino庫(kù)管理器安裝(草圖→包含庫(kù)→管理庫(kù)…)。在搜索字段中輸入“ imageread”,該庫(kù)很容易發(fā)現(xiàn):

那是“ imageread”,而不是“ ermahgerd”。

在這里的同時(shí),還要查找 Adafruit_SPIFlash 庫(kù)并進(jìn)行類似安裝。

還需要一個(gè)庫(kù),但無(wú)法通過(guò)庫(kù)管理器安裝。需要將 SdFat 庫(kù)的 Adafruit分支下載為.ZIP文件,并進(jìn)行解壓縮并安裝老式的Arduino庫(kù)。

下載SdFat(Adafruit fork)Arduino庫(kù)

Adafruit_ImageReader庫(kù)

使用該庫(kù)(以及上面的單獨(dú)安裝)的語(yǔ)法公認(rèn)有點(diǎn) peculiar ………這是它的副作用Arduino處理庫(kù)的方式。我們有目的地并沒(méi)有將其放入Adafruit_GFX,因?yàn)镾D卡庫(kù)的任何提及都將導(dǎo)致該庫(kù)相當(dāng)大的內(nèi)存需求全部 。.. 即使一個(gè)人的草圖根本不使用SD卡!大多數(shù)圖形項(xiàng)目都是獨(dú)立的,并且不引用卡中的文件……并非每個(gè)人都需要此功能。

Adafruit_ImageReader/examples文件夾中有幾個(gè)示例草圖。建議您剖析這些內(nèi)容,以獲取有關(guān)如何在自己的項(xiàng)目中使用該庫(kù)的想法。

它們都以幾個(gè)#includes開(kāi)頭。..

下載:文件

復(fù)制代碼

#include // Core graphics library

#include // Hardware-specific library

#include // SD card & FAT filesystem library

#include // SPI / QSPI flash library

#include // Image-reading functions #include // Core graphics library

#include // Hardware-specific library

#include // SD card & FAT filesystem library

#include // SPI / QSPI flash library

#include // Image-reading functions

這些示例之一可能會(huì)因一個(gè)示例而異,具體取決于該示例所支持的顯示硬件。在上方,我們看到它與Adafruit_ILI9341顯示庫(kù)配合使用,某些屏蔽罩,F(xiàn)eatherWings或分線板需要該顯示庫(kù)。其他示例引用了Adafruit_HX8357,Adafruit_ST7735或其他彩色TFT或OLED顯示庫(kù)…對(duì)您的硬件使用正確的庫(kù)。

大多數(shù)示例都可以在 SD卡,或某些Adafruit“ Express”板上的小型閃存驅(qū)動(dòng)器。用于初始化一個(gè)或另一個(gè)的代碼略有不同,這些示例檢查是否已定義 USE_SD_CARD 以選擇一種方法與另一種方法。如果您知道一個(gè)事實(shí)您自己的項(xiàng)目只需要在一種或另一種類型上運(yùn)行,那么您實(shí)際上只需要進(jìn)行相應(yīng)的初始化即可。

對(duì)于SD卡,這兩個(gè)全局變量聲明為:

下載:文件

復(fù)制代碼

SdFat SD; // SD card filesystem

Adafruit_ImageReader reader(SD); // Image-reader object, pass in SD filesys SdFat SD; // SD card filesystem

Adafruit_ImageReader reader(SD); // Image-reader object, pass in SD filesys

對(duì)于Flash文件系統(tǒng),有一些特殊的聲明可以幫助我們?cè)诓煌腅xpress板上定位Flash設(shè)備,然后聲明三個(gè)全局變量:

下載:文件

復(fù)制代碼

// SPI or QSPI flash filesystem (i.e. CIRCUITPY drive)

#if defined(__SAMD51__) || defined(NRF52840_XXAA)

Adafruit_FlashTransport_QSPI flashTransport(PIN_QSPI_SCK, PIN_QSPI_CS,

PIN_QSPI_IO0, PIN_QSPI_IO1, PIN_QSPI_IO2, PIN_QSPI_IO3);

#else

#if (SPI_INTERFACES_COUNT == 1)

Adafruit_FlashTransport_SPI flashTransport(SS, &SPI);

#else

Adafruit_FlashTransport_SPI flashTransport(SS1, &SPI1);

#endif

#endif

Adafruit_SPIFlash flash(&flashTransport);

FatFileSystem filesys;

Adafruit_ImageReader reader(filesys); // Image-reader, pass in flash filesys // SPI or QSPI flash filesystem (i.e. CIRCUITPY drive)

#if defined(__SAMD51__) || defined(NRF52840_XXAA)

Adafruit_FlashTransport_QSPI flashTransport(PIN_QSPI_SCK, PIN_QSPI_CS,

PIN_QSPI_IO0, PIN_QSPI_IO1, PIN_QSPI_IO2, PIN_QSPI_IO3);

#else

#if (SPI_INTERFACES_COUNT == 1)

Adafruit_FlashTransport_SPI flashTransport(SS, &SPI);

#else

Adafruit_FlashTransport_SPI flashTransport(SS1, &SPI1);

#endif

#endif

Adafruit_SPIFlash flash(&flashTransport);

FatFileSystem filesys;

Adafruit_ImageReader reader(filesys); // Image-reader, pass in flash filesys

“閱讀器”對(duì)象稍后將用于訪問(wèn)圖像加載功能。

然后……我們以通常的方式聲明一個(gè)顯示對(duì)象(在大多數(shù)示例中稱為“ tft”)……例如,使用Arduino的2.8英寸TFT觸摸屏,它是:

下載:文件

復(fù)制代碼

#define SD_CS 4 // SD card select pin

#define TFT_CS 10 // TFT select pin

#define TFT_DC 9 // TFT display/command pin

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); #define SD_CS 4 // SD card select pin

#define TFT_CS 10 // TFT select pin

#define TFT_DC 9 // TFT display/command pin

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

這一切都發(fā)生在全局變量部分,甚至在setup()函數(shù)之前。

現(xiàn)在我們需要在setup()中做一些工作,而且SD卡和Flash還是不同的文件系統(tǒng)…

要使用SD卡,可能看起來(lái)像這樣:

下載:文件

復(fù)制代碼

if(!SD.begin(SD_CS, SD_SCK_MHZ(25))) { // ESP32 requires 25 MHz limit

Serial.println(F(“SD begin() failed”));

for(;;); // Fatal error, do not continue

} if(!SD.begin(SD_CS, SD_SCK_MHZ(25))) { // ESP32 requires 25 MHz limit

Serial.println(F(“SD begin() failed”));

for(;;); // Fatal error, do not continue

}

此示例提供了一些非?;镜腻e(cuò)誤處理…檢查返回值SD.begin()的狀態(tài)并在出現(xiàn)問(wèn)題時(shí)將消息打印到串行監(jiān)視器。

使用閃存文件系統(tǒng)需要兩個(gè)步驟:

下載:文件

復(fù)制代碼

if(!flash.begin()) {

Serial.println(F(“flash begin() failed”));

for(;;);

}

if(!filesys.begin(&flash)) {

Serial.println(F(“filesys begin() failed”));

for(;;);

} if(!flash.begin()) {

Serial.println(F(“flash begin() failed”));

for(;;);

}

if(!filesys.begin(&flash)) {

Serial.println(F(“filesys begin() failed”));

for(;;);

}

現(xiàn)在,無(wú)論使用SD卡還是閃存,所有其他代碼都相同。要么/或設(shè)置都需要一些額外的步驟,但是現(xiàn)在一切都很順利……

之后SD(或閃存)和TFT的begin()函數(shù)已被調(diào)用,然后可以調(diào)用reader.drawBMP()將從卡中加載BMP圖像到屏幕:

下載:文件

復(fù)制代碼

ImageReturnCode stat;

stat = reader.drawBMP(“/purple.bmp”, tft, 0, 0); ImageReturnCode stat;

stat = reader.drawBMP(“/purple.bmp”, tft, 0, 0);

這接受四個(gè)參數(shù):

“ 8.3”格式的文件名(您不需要 提供絕對(duì)路徑(前導(dǎo)“/”),但是SD庫(kù)在某些方面存在一些問(wèn)題邊緣板(如ESP32),因此請(qǐng)繼續(xù)使用,以備不時(shí)之需。)

將在其中繪制圖像的顯示對(duì)象(例如, “ tft”)。 這是前面提到的怪異語(yǔ)法……因?yàn)樵?,它不是tft.drawBMP(),而是reader.drawBMP(tft)。

X和Y坐標(biāo)在頂部定位圖像的左上角(此位置不必在屏幕范圍內(nèi)……庫(kù)將在加載圖像時(shí)裁剪圖像)。 0,0將在左上角繪制圖像。..因此,如果圖像尺寸與屏幕尺寸匹配,它將填充整個(gè)屏幕。

此函數(shù)返回類型為ImageReturnCode,您可以忽略或使用它來(lái)提供某些診斷功能??赡艿闹禐椋?/p>

IMAGE_SUCCESS -圖像加載成功(或完全從屏幕上剪切下來(lái),因?yàn)闆](méi)有錯(cuò)誤,仍被認(rèn)為是“成功”)。

IMAGE_ERR_FILE_NOT_FOUND-無(wú)法打開(kāi)請(qǐng)求的文件(檢查拼寫(xiě),確認(rèn)卡上確實(shí)存在文件,確保文件符合“ 8.3”文件命名約定(例如“ filename.bmp”) )。

IMAGE_ERR_FORMAT -不支持的圖像格式。目前僅支持未壓縮的24位彩色BMP (隨著時(shí)間的推移,可能會(huì)添加更多)

IMAGE_ERR_MALLOC -無(wú)法為操作分配內(nèi)存(drawBMP()不會(huì)生成此錯(cuò)誤,但其他ImageReader函數(shù)可能會(huì))。

您可以選擇調(diào)用一個(gè)函數(shù)以向串行控制臺(tái)顯示基本診斷消息,而不必自己處理這些值:

下載:文件

復(fù)制代碼

reader.printStatus(stat); reader.printStatus(stat);

I如果您需要了解BMP圖片的 size 而不實(shí)際加載它,有bmpDimensions()函數(shù):

下載:文件

復(fù)制代碼

int32_t width, height;

stat = reader.bmpDimensions(“/parrot.bmp”, &width, &height); int32_t width, height;

stat = reader.bmpDimensions(“/parrot.bmp”, &width, &height);

這接受三個(gè)參數(shù):

文件名,與drawBMP()函數(shù)的規(guī)則相同。

指針指向兩個(gè) 32位整數(shù)。成功完成后,它們的內(nèi)容將設(shè)置為以像素為單位的圖像寬度和高度。發(fā)生任何錯(cuò)誤時(shí),這些值都應(yīng)忽略(不進(jìn)行初始化)。

此函數(shù)返回一個(gè)ImageReturnCode,如上面的drawBMP()函數(shù)所述。

RAM中加載和使用圖像

取決于圖像大小和其他因素,將圖像從SD卡加載到屏幕可能需要幾秒鐘。小圖像……那些完全可以放入RAM的圖像……可以一次加載并重復(fù)使用。這對(duì)于經(jīng)常使用的圖標(biāo)或sprite可能很方便,因?yàn)樗ǔ1戎苯訉D像作為數(shù)組轉(zhuǎn)換并嵌入到數(shù)組中更容易……這是一個(gè)可怕的過(guò)程。

這引入了另一個(gè)ImageReader函數(shù)以及一個(gè)新功能。對(duì)象類型,Adafruit_Image:

下載:文件

復(fù)制代碼

Adafruit_Image img;

stat = reader.loadBMP(“/wales.bmp”, img); Adafruit_Image img;

stat = reader.loadBMP(“/wales.bmp”, img);

loadBMP()接受兩個(gè)參數(shù):

文件名,規(guī)則與以前的功能相同。

一個(gè)Adafruit_Image對(duì)象。這種類型比GFX庫(kù)中一些繪圖功能使用的位圖稍微靈活一些。

這將返回一個(gè)ImageReturnCode,如前所述。如果圖像太大而無(wú)法容納在可用RAM中,則將返回IMAGE_ERR_MALLOC的值。彩色圖像每像素需要兩個(gè)字節(jié)…例如,一個(gè)100x25像素圖像將需要100 * 25 * 2 = 5,000字節(jié)RAM。

成功后,img對(duì)象將圖像包含在RAM中

loadBMP()函數(shù)僅在具有大量RAM的微控制器(例如Adafruit的“ M0”和“ M4”板或ESP32)上有用。像Arduino Uno這樣的小型設(shè)備無(wú)法切割。在具有很小圖像的Arduino Mega上,邊緣可能有用。

加載后,使用img.draw()函數(shù)在屏幕上顯示圖像:

下載:文件

復(fù)制代碼

img.draw(tft, x, y); img.draw(tft, x, y);

這接受三個(gè)參數(shù):

顯示對(duì)象(例如,大多數(shù)示例中為“ tft”) ,類似于drawBMP()的工作方式。

屏幕上圖像左上角的X和Y坐標(biāo),再次類似于drawBMP()。

我們使用img.draw(tft,…)而不是tft.drawRGBBitmap(…)(或Adafruit_GFX庫(kù)中的其他位圖繪制函數(shù)),因?yàn)閷?lái)我們計(jì)劃在圖像文件格式和類型方面增加更多靈活性。 Adafruit_Image對(duì)象對(duì)所加載的圖像有一些“了解”,并會(huì)自動(dòng)調(diào)用相應(yīng)的位圖渲染功能,您不必自己處理每種情況。

如果圖像由于某種原因無(wú)法加載,仍然可以調(diào)用img.draw(),它將不執(zhí)行。但是至少草圖不會(huì)崩潰。
責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6498

    瀏覽量

    192151
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    零知開(kāi)源——STM32F4結(jié)合BMP581氣壓傳感器實(shí)現(xiàn)ST7789中文顯示教程

    傳感器數(shù)據(jù)采集。通過(guò)U8g2庫(kù)實(shí)現(xiàn)高質(zhì)量中文渲染,混合Adafruit_GFX進(jìn)行高效數(shù)據(jù)顯示,實(shí)時(shí)展示溫度、壓力和高度數(shù)據(jù)。教程詳細(xì)介紹了硬件連接方案(I2C/SPI接口)、軟件架構(gòu)設(shè)計(jì)(包含庫(kù)依賴關(guān)系和數(shù)據(jù)讀取機(jī)制)以及中文
    的頭像 發(fā)表于 07-09 09:21 ?155次閱讀
    零知開(kāi)源——STM32F4結(jié)合BMP581氣壓傳感器實(shí)現(xiàn)ST7789中文顯示教程

    零知開(kāi)源——STM32F4結(jié)合BMP581氣壓傳感器實(shí)現(xiàn)ST7789中文顯示教程

    :提供傳感器初始化接口、封裝數(shù)據(jù)讀取函數(shù)、處理I2C通信協(xié)議 Adafruit_ST7789+GFX庫(kù):實(shí)現(xiàn)屏幕底層驅(qū)動(dòng)、提供圖形繪制API、優(yōu)化顯示性能 U8g2_for_Adafruit_
    發(fā)表于 07-08 18:55

    改善光刻圖形線寬變化的方法及白光干涉儀在光刻圖形的測(cè)量

    引言 在半導(dǎo)體制造與微納加工領(lǐng)域,光刻圖形線寬變化直接影響器件性能與集成度。精確控制光刻圖形線寬是保障工藝精度的關(guān)鍵。本文將介紹改善光刻圖形線寬變化的方法,并探討白光干涉儀在光刻圖形測(cè)
    的頭像 發(fā)表于 06-30 15:24 ?121次閱讀
    改善光刻<b class='flag-5'>圖形</b>線寬變化的方法及白光干涉儀在光刻<b class='flag-5'>圖形</b>的測(cè)量

    改善光刻圖形垂直度的方法及白光干涉儀在光刻圖形的測(cè)量

    引言 在半導(dǎo)體制造與微納加工領(lǐng)域,光刻圖形的垂直度對(duì)器件的電學(xué)性能、集成密度以及可靠性有著重要影響。精準(zhǔn)控制光刻圖形垂直度是保障先進(jìn)制程工藝精度的關(guān)鍵。本文將系統(tǒng)介紹改善光刻圖形垂直度的方法,并
    的頭像 發(fā)表于 06-30 09:59 ?119次閱讀
    改善光刻<b class='flag-5'>圖形</b>垂直度的方法及白光干涉儀在光刻<b class='flag-5'>圖形</b>的測(cè)量

    AD庫(kù)封裝庫(kù)安裝教程

    電子發(fā)燒友網(wǎng)站提供《AD庫(kù)封裝庫(kù)安裝教程.pdf》資料免費(fèi)下載
    發(fā)表于 06-19 15:35 ?3次下載

    深入了解U8g2與LVGL圖形庫(kù)

    在單片機(jī)開(kāi)發(fā)領(lǐng)域,圖形顯示功能變得越來(lái)越重要。無(wú)論是工業(yè)控制界面、智能家居設(shè)備,還是手持儀器儀表,都需要一個(gè)高效且易用的圖形庫(kù)來(lái)實(shí)現(xiàn)豐富的可視化效果。U8g2 和 LVGL 就是其中兩款備受關(guān)注的
    的頭像 發(fā)表于 02-13 11:01 ?2092次閱讀

    SciChart—高性能的JavaScript圖表和圖形庫(kù)

    使用 SciChart 的 JavaScript 圖表庫(kù)為您的 JS 應(yīng)用程序發(fā)現(xiàn)終極解決方案。 使用 WebGL 創(chuàng)建動(dòng)態(tài)、高速的圖表和圖形,非常適合實(shí)時(shí)處理復(fù)雜的數(shù)據(jù)可視化。使用我們強(qiáng)大而靈活
    的頭像 發(fā)表于 01-22 10:15 ?725次閱讀
    SciChart—高性能的JavaScript圖表和<b class='flag-5'>圖形</b><b class='flag-5'>庫(kù)</b>

    分布式云化數(shù)據(jù)庫(kù)有哪些類型

    分布式云化數(shù)據(jù)庫(kù)有哪些類型?分布式云化數(shù)據(jù)庫(kù)主要類型包括:關(guān)系型分布式數(shù)據(jù)庫(kù)、非關(guān)系型分布式數(shù)據(jù)庫(kù)、新SQL分布式數(shù)據(jù)庫(kù)、以列方式存儲(chǔ)數(shù)據(jù)、
    的頭像 發(fā)表于 01-15 09:43 ?480次閱讀

    Stellaris圖形庫(kù)用戶指南

    電子發(fā)燒友網(wǎng)站提供《Stellaris圖形庫(kù)用戶指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-23 16:19 ?0次下載
    Stellaris<b class='flag-5'>圖形</b><b class='flag-5'>庫(kù)</b>用戶指南

    芯原股份與LVGL達(dá)成戰(zhàn)略合作,共推嵌入式圖形處理能力

    近日,芯原股份宣布與嵌入式系統(tǒng)領(lǐng)域知名的開(kāi)源圖形庫(kù)LVGL達(dá)成戰(zhàn)略合作。此次合作的核心在于,芯原將在LVGL庫(kù)中支持其低功耗3D和VGLite 2.5D GPU技術(shù),為廣泛的嵌入式應(yīng)用提供更為優(yōu)化
    的頭像 發(fā)表于 12-11 14:29 ?891次閱讀

    芯原股份與開(kāi)源圖形庫(kù)LVGL達(dá)成戰(zhàn)略合作

    芯原股份 (芯原,股票代碼:688521.SH) 今日宣布與嵌入式系統(tǒng)領(lǐng)域領(lǐng)先的開(kāi)源圖形庫(kù)LVGL達(dá)成戰(zhàn)略合作,在LVGL庫(kù)中支持芯原的低功耗3D和VGLite 2.5D GPU技術(shù)。此次合作旨在
    的頭像 發(fā)表于 11-29 09:20 ?797次閱讀

    如何在低成本ARM平臺(tái)部署LVGL免費(fèi)圖形庫(kù),基于全志T113-i

    本帖最后由 Tronlong創(chuàng)龍科技 于 2024-10-29 10:39 編輯 LVGL簡(jiǎn)介 LVGL(Littlev Graphics Library)是一個(gè)開(kāi)源的圖形庫(kù),主要用于嵌入式
    發(fā)表于 10-29 09:55

    使用MSP430圖形庫(kù)時(shí)的設(shè)計(jì)注意事項(xiàng)

    電子發(fā)燒友網(wǎng)站提供《使用MSP430圖形庫(kù)時(shí)的設(shè)計(jì)注意事項(xiàng).pdf》資料免費(fèi)下載
    發(fā)表于 09-03 10:49 ?0次下載
    使用MSP430<b class='flag-5'>圖形</b><b class='flag-5'>庫(kù)</b>時(shí)的設(shè)計(jì)注意事項(xiàng)

    擺脫自建庫(kù)的繁瑣,EDA元件庫(kù)轉(zhuǎn)cadence原理圖封裝庫(kù)實(shí)戰(zhàn)技巧

    擺脫自建庫(kù)的繁瑣,EDA元件庫(kù)轉(zhuǎn)cadence原理圖封裝庫(kù)實(shí)戰(zhàn)技巧
    的頭像 發(fā)表于 08-24 12:29 ?6681次閱讀
    擺脫自建<b class='flag-5'>庫(kù)</b>的繁瑣,EDA元件<b class='flag-5'>庫(kù)</b>轉(zhuǎn)cadence原理圖封裝<b class='flag-5'>庫(kù)</b>實(shí)戰(zhàn)技巧

    【核桃派ZeroW開(kāi)發(fā)板體驗(yàn)連載】小小氣象站 03 aht10、bmp280測(cè)試

    使用Thonny的遠(yuǎn)程python一下: 點(diǎn)擊好的,輸入密碼后遠(yuǎn)程python: AHT10測(cè)試 先接一下線: 打開(kāi)終端,安裝python驅(qū)動(dòng)aht10的庫(kù): sudo pip3 install
    發(fā)表于 08-10 10:04