日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

arduino使用oled代码_实用!Arduino平台最强大的“显卡”驱动:Adafruit GFX 图形库8000字详细使用指南...

發(fā)布時(shí)間:2024/1/23 编程问答 229 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arduino使用oled代码_实用!Arduino平台最强大的“显卡”驱动:Adafruit GFX 图形库8000字详细使用指南... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概述

Arduino的Adafruit_GFX庫(kù)為我們所有的LCD和OLED顯示屏提供了通用語(yǔ)法和圖形功能集。這使得Arduino示例程序可以很容易地在不同類(lèi)型的顯示屏之間進(jìn)行調(diào)整,并且任何新特性、性能改進(jìn)和錯(cuò)誤修復(fù)都將立即應(yīng)用于我們提供的完整的彩色顯示。

Adafruit_GFX庫(kù)可以使用Arduino庫(kù)管理器安裝……這是首選的方式。在Arduino IDE“工具”菜單中,選擇“管理庫(kù)…”

在搜索欄中輸入“gfx”可以快速找到它:

在這里,也要搜索并安裝Adafruit_BusIO庫(kù)(或者…新的Arduino IDE版本自動(dòng)安裝這個(gè)依賴(lài)項(xiàng))。

Adafruit_GFX庫(kù)總是與每個(gè)特定顯示驅(qū)動(dòng)類(lèi)型的附加庫(kù)一起工作——例如,ST7735 1.8英寸的彩色LCD需要安裝Adafruit_GFX、Adafruit_BusIO和Adafruit_ST7735庫(kù)。目前支持下面這些庫(kù):

  • RGBmatrixPanel, for our 16x32 and 32x32 RGB LED 矩陣面板。
  • Adafruit_TFTLCD, for our 2.8" Arduino的觸屏盾板和TFT觸摸屏。
  • Adafruit_HX8340B, for our 2.2" TFT 帶microSD存儲(chǔ)卡的顯示屏。
  • Adafruit_ST7735, for our 2.2" TFT 帶microSD存儲(chǔ)卡的顯示屏。
  • Adafruit_PCD8544, for the Nokia 5110/3310 單色LCD
  • Adafruit-Graphic-VFD-Display-庫(kù), for our 128x64 圖形VFD(真空熒光顯示器)。

Adafruit-SSD1331-OLED-Driver-Library 兼容arduino的0.96" 16位彩色OLED w/帶microSD卡槽。

  • Adafruit_SSD1306,用于單色128x64 和128x32 OLED顯示屏。

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

坐標(biāo)系和單位

像素—圖像元素,組成數(shù)字圖像的塊——通過(guò)它們的水平(X)和垂直(Y)坐標(biāo)進(jìn)行定位。坐標(biāo)系將原點(diǎn)(0,0)放在左上角,正X向右遞增,正Y向下遞增。這與數(shù)學(xué)中的標(biāo)準(zhǔn)笛卡爾坐標(biāo)系統(tǒng)是顛倒的,但在許多計(jì)算機(jī)圖形系統(tǒng)中已經(jīng)建立了實(shí)踐(追溯到光柵掃描CRT圖形的時(shí)代,它自上而下地工作)。要使用高大的“縱向”布局而不是寬的“橫向”格式,或者如果物理安裝方向限制了附件中顯示的方向,也可以應(yīng)用四個(gè)旋轉(zhuǎn)設(shè)置中的一個(gè),即顯示的哪個(gè)角代表左上角。

同樣與數(shù)學(xué)笛卡爾坐標(biāo)系不同的是,這里的點(diǎn)有維數(shù)——它們的寬和高總是一個(gè)完整的整數(shù)像素。

坐標(biāo)總是用像素單位表示;沒(méi)有像毫米或英寸這樣的現(xiàn)實(shí)測(cè)量的隱含比例,顯示圖形的大小將是特定顯示的點(diǎn)間距或像素密度的函數(shù)。如果你的目標(biāo)是真實(shí)的維度,你需要縮放你的坐標(biāo)來(lái)適應(yīng)。點(diǎn)間距通常可以在顯示屏的數(shù)據(jù)手冊(cè)中找到,或者通過(guò)測(cè)量屏幕寬度并將像素?cái)?shù)除以這個(gè)測(cè)量值。

對(duì)于彩色顯示器,顏色表示為無(wú)符號(hào)的16位值。 某些顯示器實(shí)際上可能比這更多或更少,但是該庫(kù)以16位值運(yùn)行……這些對(duì)于Arduino來(lái)說(shuō)很容易使用,同時(shí)還為所有不同的顯示器提供一致的數(shù)據(jù)類(lèi)型。 紅色,綠色和藍(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)始可能是最簡(jiǎn)單的:

// 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ì)于單色顯示,顏色總是簡(jiǎn)單地指定為1 (set)或0 (clear)。set/clear的語(yǔ)義是特定于顯示類(lèi)型的:像發(fā)光的OLED顯示,“set”像素是發(fā)光的,而反光的LCD顯示,“set”像素通常是暗的。可能會(huì)有例外,但通常您可以期望0 (clear)表示新初始化的顯示的默認(rèn)背景狀態(tài),無(wú)論結(jié)果如何。

基本圖形

每個(gè)用于特定顯示屏的顯示庫(kù)都有自己的構(gòu)造函數(shù)和初始化函數(shù)。這些在每個(gè)顯示屏類(lèi)型的單獨(dú)教程中都有記錄,或者通常在特定的庫(kù)頭文件中有說(shuō)明。本教程的其余部分將介紹與顯示類(lèi)型無(wú)關(guān)的通用圖形函數(shù)。

下面的函數(shù)描述只是原型—假設(shè)顯示對(duì)象是由特定于設(shè)備的庫(kù)根據(jù)需要聲明和初始化的。查看每個(gè)庫(kù)的示例代碼,了解它的實(shí)際使用情況。例如,在我們顯示print(1234.56)的地方,你的實(shí)際代碼會(huì)把對(duì)象名稱(chēng)放在這之前,例如,它可能會(huì)讀做screen.print(1234.56)(如果你已經(jīng)聲明了顯示對(duì)象的名稱(chēng)為:screen)。

  • 繪制像素(點(diǎn))

首先是最基本的像素推送器。你可以調(diào)用它,并指定參數(shù):X Y坐標(biāo)和一種顏色,它會(huì)在屏幕上生成一個(gè)點(diǎn):

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

  • 繪制線(xiàn)

你也可以畫(huà)一條線(xiàn),指定起點(diǎn)和終點(diǎn)和顏色:

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

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

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ì)、寬度和高度(以像素為單位)以及顏色。drawRect()只渲染矩形的框架(輪廓)-內(nèi)部不受影響-而fillRect()用給定的顏色填充整個(gè)區(qū)域:

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)建具有對(duì)比輪廓的實(shí)線(xiàn)矩形,首先使用fillRect(),然后在其上使用drawRect()。

  • 繪制圓

同樣,對(duì)于圓圈,你可以畫(huà)邊框和填充。每個(gè)函數(shù)輸入一個(gè)X, Y對(duì)作為中心點(diǎn),半徑(以像素為單位)和顏色:

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)始,然后是角半徑(以像素為單位),最后是顏色值:

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);

這里還有一個(gè)額外的小技巧:因?yàn)楫?huà)圓函數(shù)總是相對(duì)于一個(gè)中心點(diǎn)像素繪制的,所以最終的圓直徑將總是一個(gè)奇數(shù)像素。如果需要一個(gè)均勻大小的圓(這將在像素之間放置中心點(diǎn)),可以使用一個(gè)圓角矩形函數(shù)來(lái)實(shí)現(xiàn):傳遞相同的寬度和高度(均為偶數(shù)),以及剛好為該值一半的角半徑。

  • 繪制三角形

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

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);

  • 輸出字符和文本

輸出文本有兩個(gè)基本的字符串繪制過(guò)程。第一個(gè)只是針對(duì)一個(gè)字符。你可以把這個(gè)字符放在任何位置并使用任意顏色。只有一種字體(為了節(jié)省空間),它應(yīng)該是5x8像素,但是可以傳遞一個(gè)可選的大小參數(shù),根據(jù)這個(gè)因素來(lái)縮放字體(例如size=2將渲染文本為每個(gè)字符10x16像素)。它是一個(gè)小塊狀,但只有一個(gè)字體有助于保持程序代碼的占用空間。

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

文本非常靈活,但操作方式略有不同。文本大小、顏色和位置不是一個(gè)過(guò)程,而是在單獨(dú)的函數(shù)中設(shè)置的,然后使用print()函數(shù)——這樣做很簡(jiǎn)單,并且提供了我們非常熟悉的Serial.print()函數(shù)的所有字符串和數(shù)字格式化功能!

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)槲覀儍H以單一的簡(jiǎn)單字體提供了該庫(kù),以節(jié)省空間。

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

在設(shè)置好所有內(nèi)容之后,您可以使用print()或println()—就像您使用串行打印一樣!例如,要打印一個(gè)字符串,使用print(“Hello world”)—這是上面圖像的第一行。還可以對(duì)數(shù)字和變量使用print()—上面的第二行是print(1234.56)的輸出,第三行是print(0xDEADBEEF, HEX)。

默認(rèn)情況下,超出一行的長(zhǎng)文本被設(shè)置為自動(dòng)“換行”到最左邊的列。要取消此行為(這樣文本就會(huì)從顯示屏的右側(cè)運(yùn)行——這對(duì)于滾動(dòng)字幕效果很有用),請(qǐng)使用setTextWrap(false)。使用setTextWrap(true)恢復(fù)正常的“換行”行為。

請(qǐng)參閱“使用字體”頁(yè)面,了解最新GFX庫(kù)中的附加文本特性。

  • 顯示位圖

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

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

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

位圖數(shù)據(jù)必須使用PROGMEM指令定位在程序內(nèi)存中。這是一個(gè)比較高級(jí)的函數(shù),建議初學(xué)者稍后再來(lái)使用。有關(guān)PROGMEM用法的介紹,請(qǐng)參閱Arduino教程。

可以使用一些工具來(lái)生成位圖數(shù)據(jù)。

  • 清理或填充屏幕

fillScreen()函數(shù)將把整個(gè)顯示設(shè)置為給定的顏色,刪除所有顯示屏現(xiàn)有的內(nèi)容:

void fillScreen(uint16_t color);
  • 旋轉(zhuǎn)顯示
  • 你也可以旋轉(zhuǎn)你的繪圖。注意,這不會(huì)旋轉(zhuǎn)你已經(jīng)繪制的內(nèi)容,但會(huì)改變?nèi)魏涡吕L制的坐標(biāo)系統(tǒng)。如果你必須把你的電路板或橫向顯示或倒置來(lái)適應(yīng)一個(gè)特定的外殼,這是非常方便的。在大多數(shù)情況下,這只需要在setup()函數(shù)中執(zhí)行一次。

    我們只能旋轉(zhuǎn)0,90,180或270度——其他角度的在硬件上是不可能的,而且對(duì)于Arduino來(lái)說(shuō)在軟件上計(jì)算太費(fèi)力了。

    void setRotation(uint8_t rotation);

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

    對(duì)于其他的類(lèi)型的顯示屏,請(qǐng)嘗試所有的4個(gè)方向,來(lái)弄清楚他們?nèi)绾谓Y(jié)束旋轉(zhuǎn),因?yàn)閷?duì)齊將會(huì)根據(jù)每個(gè)顯示器有所不同,一般來(lái)說(shuō)旋轉(zhuǎn)是逆時(shí)針的。

    當(dāng)旋轉(zhuǎn)時(shí),原點(diǎn)(0,0)會(huì)發(fā)生變化——其思想是,它應(yīng)該被安排在顯示器的左上方,以使其他圖形函數(shù)具有一致的意義(并與上面所有的函數(shù)描述相匹配)。

    如果您需要引用屏幕的大小(它會(huì)在縱向和橫向模式之間變化),請(qǐng)使用width()和height()。

    uint16_t width(); uint16_t height();

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

  • 使用字體
  • Adafruit GFX庫(kù)的最新版本提供了使用備用字體的能力,除了內(nèi)置的標(biāo)準(zhǔn)的固定大小和間隔字體之外。包括幾種備用字體,而且還可以添加新的字體。

    所包含的字體來(lái)自GNU FreeFont項(xiàng)目。字體有三種:“Serif”(讓人聯(lián)想到Times New Roman)、“Sans”(讓人聯(lián)想到Helvetica或Arial)和“Mono”(讓人聯(lián)想到Courier)。每種都有幾種樣式(粗體、斜體等)和大小可供選擇。所包括的字體是位圖格式,而不是可伸縮的矢量,因?yàn)樗沁\(yùn)行在一個(gè)小型微控制器里。

    位于Adafruit_GFX的“字體”文件夾中,包含的文件(截至撰寫(xiě)本文時(shí))如下:

    位于Adafruit_GFX的“字體”文件夾中,包含的文件(截至撰寫(xiě)本文時(shí))如下:

    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è)文件名以前綴名(“FreeMono”、“FreeSerif”等)開(kāi)頭,然后是樣式(“粗體”、“斜體”、“無(wú)”等)、點(diǎn)字體大小(目前提供了9、12、18和24點(diǎn)大小)和“7b”,表示這些文件包含7位字符(ASCII碼“ ”到“~”);8位字體(支持符號(hào)和/或國(guó)際字符)尚未提供,但可能稍后提供。

    • 在Arduino示例程序中使用GFX字體

    在#including 后面指示Adafruit_GFX和特定于顯示的庫(kù),包括你計(jì)劃在程序中使用的字體文件。例如:

    #include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_TFTLCD.h> // Hardware-specific library #include <Fonts/FreeMonoBoldOblique12pt7b.h> #include <Fonts/FreeSerif9pt7b.h>

    每種字體都會(huì)占用一些程序存儲(chǔ)空間;較大的字體通常需要更多的空間。這是一個(gè)有限的資源(對(duì)于字體數(shù)據(jù)和所有示例代碼,在Arduino Uno上最大大約為32K),所以要仔細(xì)選擇。太大,代碼將拒絕編譯(或者在某些邊緣情況下,可能會(huì)編譯,但不會(huì)上傳到開(kāi)發(fā)板)。如果出現(xiàn)這種情況,使用更少或更小的字體,或使用標(biāo)準(zhǔn)的內(nèi)置字體。

    在這些these.h文件中有幾個(gè)數(shù)據(jù)結(jié)構(gòu),包括一個(gè)主字體結(jié)構(gòu),它通常與字體文件同名(去掉 .h)。要為后續(xù)的圖形操作選擇一種字體,使用setFont()函數(shù),傳遞該結(jié)構(gòu)的地址,例如:

    tft.setFont(&FreeMonoBoldOblique12pt7b);

    對(duì)tft.print()的后續(xù)調(diào)用,現(xiàn)在將使用這種字體。以前使用內(nèi)置字體的大多數(shù)其他屬性(顏色、大小等)在這里也是類(lèi)似的。

    要返回標(biāo)準(zhǔn)的固定大小的字體,調(diào)用setFont(),傳遞NULL或no參數(shù):

    tft.setFont();

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

    例如,使用經(jīng)典字體打印時(shí),光標(biāo)位置標(biāo)識(shí)在字符單元格的左上角,而使用新字體時(shí),光標(biāo)位置表示后續(xù)文本的基線(xiàn)——最下面一行。字符的大小和寬度可能不同,而且不一定是從光標(biāo)列開(kāi)始的(如下所示,該字符從光標(biāo)左邊的一個(gè)像素開(kāi)始,但其他字符可能在它的右邊或上面)。

    有一個(gè)新字體需要注意的“缺陷”,沒(méi)有background顏色選項(xiàng)……你可以設(shè)置這個(gè)值,但它會(huì)被忽略。

    這是有意而為之的。

    背景顏色特性有時(shí)與“經(jīng)典”字體一起使用,用于用新數(shù)據(jù)覆蓋舊屏幕內(nèi)容。這之所以有效,是因?yàn)檫@些字符的大小是一致的;這不適用于比例間距的字體,在這種字體中,可能會(huì)有數(shù)量不確定的字符重疊在同一區(qū)域。字符繪制函數(shù)并不是這樣設(shè)置的(在AVRs上,它在內(nèi)存和速度上都是禁止的,而庫(kù)仍然支持它)。

    使用自定義字體時(shí),可以替換之前繪制的測(cè)試:

    使用getTextBounds()確定包含字符串的最小矩形,使用fillRect()擦除該區(qū)域,然后繪制新的文本:

    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()。

    在擦除和重繪時(shí),將會(huì)導(dǎo)致文本“閃爍”,但這是不可避免的。在同一通道中繪制背景像素的舊方案只會(huì)產(chǎn)生一系列新的問(wèn)題。

    或者:

    為固定大小的區(qū)域創(chuàng)建一個(gè)GFXcanvax1對(duì)象(屏幕外位圖),在其中繪制自定義文本并使用drawBitmap()復(fù)制到屏幕上。

    // In global declarations: GFXcanvas1 canvas(128, 32); // 128x32 pixel canvas // In code later: canvas.println("I like cake"); tft.drawBitmap(x, y, canvas, 128, 32, foreground, background); // Copy to screen

    這將是無(wú)閃爍的,但需要更多的RAM(對(duì)于上面顯示的128x32像素的畫(huà)布,大約512字節(jié)),所以在2K的AVR板上并不都是是可用的。Arduino Mega或任何其它32位處理器的開(kāi)發(fā)板應(yīng)該可以管理。

    添加新字體

    如果您想要?jiǎng)?chuàng)建庫(kù)中沒(méi)有包含的新字體尺寸,或者修改全新的字體,我們有一個(gè)命令行工具(在“fontconvert”文件夾中)可以實(shí)現(xiàn)此目的。它應(yīng)該可以在許多類(lèi)似Linux或unix的系統(tǒng)上工作(覆蓋了Pi, Mac OS X,也許是用于Windows的Cygwin,等等)。

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

    fontconvert需要至少兩個(gè)參數(shù):一個(gè)字體文件名(例如一個(gè)可伸縮的TrueType矢量字體)和一個(gè)大小,以點(diǎn)為單位(72點(diǎn)= 1英寸;代碼假設(shè)屏幕分辨率類(lèi)似于Adafruit 2.8” TFT顯示)。輸出應(yīng)該被重定向到一個(gè)。h文件…你可以叫它任何你喜歡人名字,但應(yīng)具用一定的描述性:

    ./fontconvert myfont.ttf 12 > myfont12pt7b.h

    GNU FreeFont文件并不包含在庫(kù)存儲(chǔ)庫(kù)中,但是很容易下載。或者你可以轉(zhuǎn)換任何你喜歡的字體。

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

    生成的.h文件可以復(fù)制到Adafruit_GFX/Fonts文件夾中,或者您可以使用sketch→Add file…命令在Arduino示例中導(dǎo)入該文件作為新選項(xiàng)卡。

    如果在字體文件夾中,請(qǐng)?jiān)?include文件時(shí)使用以下語(yǔ)法:

    #include <Fonts/myfont12pt7b.h>

    如果在你的sketch中有一個(gè)標(biāo)簽,使用以下語(yǔ)法:

    #include "myfont12pt7b.h"

    載入圖像

    從SD卡(或Adafruit“Express”板上的閃存芯片)加載。bmp圖像是我們大多數(shù)彩色顯示器的選項(xiàng)……盡管它不是內(nèi)置在Adafruit_GFX中,必須單獨(dú)安裝。

    Adafruit_ImageReader庫(kù)處理此任務(wù)。可以通過(guò)Arduino庫(kù)管理器安裝(在Arduino IDE“工具”菜單中,選擇“管理庫(kù)…”)在搜索框中輸入“imageread”,庫(kù)就很容易找到。

    當(dāng)你在那里,也尋找Adafruit_SPIFlash庫(kù)并安裝它類(lèi)似。

    還需要一個(gè)庫(kù),但是不能通過(guò)庫(kù)管理器安裝它。SdFat庫(kù)的Adafruit分支需要以. zip文件的形式下載,解壓縮后用Arduino老的安裝庫(kù)方式安裝。

    鏈接:https://pan.baidu.com/s/1e0F_if19k9J8gz-SFyhpAQ

    提取碼:l6o1

    使用Adafruit_ImageReader庫(kù)

    使用這個(gè)庫(kù)(以及上面的獨(dú)立安裝)的語(yǔ)法確實(shí)有點(diǎn)奇怪……這是Arduino處理庫(kù)方式的副作用。我們故意沒(méi)有把它放到Adafruit_GFX中,因?yàn)橹灰岬揭粋€(gè)SD卡庫(kù),就會(huì)引起該庫(kù)相當(dāng)大的內(nèi)存需求……即使一個(gè)人的程序中根本不用SD卡!大多數(shù)圖形項(xiàng)目都是獨(dú)立的,不需要從卡上引用文件…不是每個(gè)人都需要這個(gè)功能。

    在Adafruit_ImageReader/examples文件夾中有幾個(gè)示例程序。建議您仔細(xì)分析這些內(nèi)容,了解如何在自己的項(xiàng)目中使用庫(kù)。

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

    #include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_ILI9341.h> // Hardware-specific library #include <SdFat.h> // SD card & FAT filesystem library #include <Adafruit_SPIFlash.h> // SPI / QSPI flash library #include <Adafruit_ImageReader.h> // Image-reading functions

    在不同的示例中,其中一行可能會(huì)有所不同,這取決于它編寫(xiě)用來(lái)支持的顯示硬件。上面我們看到它和Adafruit_ILI9341顯示屏庫(kù)一起使用,這些顯示庫(kù)需要特定的套件,FeatherWings 系例板子或轉(zhuǎn)接板。其他例子參考Adafruit_HX8357, Adafruit_ST7735,或其他彩色TFT或OLED顯示庫(kù)…使用你有的正確硬件。

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

    使用SD卡時(shí),聲明以下兩個(gè)全局變量:

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

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

    // 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);#elseAdafruit_FlashTransport_SPI flashTransport(SS1, &SPI1);#endif#endifAdafruit_SPIFlash flash(&flashTransport);FatFileSystem filesys;Adafruit_ImageReader reader(filesys); // Image-reader, pass in flash filesys

    “reader”對(duì)象稍后將用于訪問(wèn)圖像加載函數(shù)。

    然后…我們按照通常的方式聲明一個(gè)顯示對(duì)象(大多數(shù)例子中稱(chēng)為“tft”)…例如Arduino的2.8英寸tft觸屏為:

    #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卡時(shí),它可能是這樣的:

    if(!SD.begin(SD_CS, SD_SCK_MHZ(25))) { // ESP32 requires 25 MHz limitSerial.println(F("SD begin() failed"));for(;;); // Fatal error, do not continue}

    這個(gè)示例提供了一些非常基本的錯(cuò)誤處理……檢查SD.begin()的返回狀態(tài),并在出現(xiàn)問(wèn)題時(shí)向串行監(jiān)視器打印一條消息。

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

    if(!flash.begin()) {Serial.println(F("flash begin() failed"));for(;;);}if(!filesys.begin(&flash)) {Serial.println(F("filesys begin() failed"));for(;;);}

    所有其他代碼現(xiàn)在是相同的,不管使用的是SD卡還是閃存。設(shè)置需要一些額外的步驟,但現(xiàn)在一切順利……

    在SD(或flash)和TFT的begin()函數(shù)被調(diào)用后,你可以調(diào)用reader.drawBMP()將一個(gè)BMP圖像從卡上加載到屏幕上:

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

    這里可以接收4個(gè)參數(shù):

    一個(gè)“8.3”格式的文件名(你不需要提供一個(gè)絕對(duì)路徑(前面的“/”),但是在一些前沿的板(比如ESP32)上,SD庫(kù)存在一些問(wèn)題,所以你還是繼續(xù)這樣做吧,包括現(xiàn)在這個(gè))。

    將繪制圖像的顯示對(duì)象(例如“tft”)。這就是前面提到的奇怪語(yǔ)法,它不是tft. drawbmp(),而是reader.drawBMP(tft)。

    圖片左上角的X和Y坐標(biāo)(不需要在屏幕范圍內(nèi)…庫(kù)會(huì)在圖片加載時(shí)剪切)。0,0將在左上角繪制圖像…因此,如果圖像的尺寸與屏幕尺寸匹配,它將填滿(mǎn)整個(gè)屏幕。

    這個(gè)函數(shù)返回一個(gè)ImageReturnCode類(lèi)型的值,您可以忽略它,也可以使用它來(lái)提供一些診斷功能。可能的值是:

    IMAGE_SUCCESS -圖片加載成功(或被完全刪除,仍然被認(rèn)為是“成功”,因?yàn)闆](méi)有錯(cuò)誤)。

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

    IMAGE_ERR_FORMAT—不支持的圖像格式。目前只支持未壓縮的24位彩色BMPs (后續(xù)可能會(huì)添加更多)。

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

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

    reader.printStatus(stat);

    如果你需要知道一個(gè)BMP圖像的大小而不實(shí)際加載它,有bmpDimensions()函數(shù):

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

    這個(gè)函數(shù)可以接收3個(gè)參數(shù):

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

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

    這個(gè)函數(shù)返回ImageReturnCode,正如上面的drawBMP()函數(shù)所解釋的那樣。

    在RAM中加載和使用圖像

    根據(jù)圖像大小和其他因素,從SD卡加載圖像到屏幕可能需要幾秒鐘。小的圖片,可以完全裝進(jìn)內(nèi)存,可以載入一次并重復(fù)使用。這對(duì)于經(jīng)常使用的圖標(biāo)或精靈來(lái)說(shuō)非常方便,因?yàn)樗ǔ1绒D(zhuǎn)換并將圖像作為數(shù)組直接嵌入到代碼中要容易得多……這是一個(gè)可怕的過(guò)程。

    這引入了另一個(gè)ImageReader函數(shù)和一個(gè)新的對(duì)象類(lèi)型Adafruit_Image:

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

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

    • 文件名,規(guī)則與前面的函數(shù)相同。
    • 一個(gè)Adafruit_Image對(duì)象。這種類(lèi)型比GFX庫(kù)中一些繪圖函數(shù)使用的位圖稍微靈活一些。

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

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

    loadBMP()函數(shù)僅對(duì)具有RAM比較大的微控制器有用,如Adafruit“M0”和“M4”板,或ESP32。像Arduino Uno這樣的小設(shè)備就無(wú)法做到這一點(diǎn)。在Arduino Mega上使用非常小的圖像可能可以。

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

    img.draw(tft, x, y);

    這個(gè)函數(shù)有3個(gè)參數(shù):

    • 一個(gè)顯示對(duì)象(例如大多數(shù)例子中的“tft”),類(lèi)似于drawBMP()的工作方式。
    • 屏幕上圖像左上角的X和Y坐標(biāo),同樣類(lèi)似于drawBMP()。

    我們使用img.draw(tft,…)而不是tft. drawrgbbitmap(…)(或Adafruit_GFX庫(kù)中的其他位圖繪制函數(shù)),因?yàn)槲覀冇?jì)劃在圖像文件格式和類(lèi)型方面增加更多的靈活性。Adafruit_Image對(duì)象“understands”已加載的圖像的一些信息,并將自動(dòng)調(diào)用適當(dāng)?shù)奈粓D渲染函數(shù),您不必自己處理每個(gè)單獨(dú)的情況。

    如果圖片因?yàn)槿魏卧蚣虞d失敗,im .draw()仍然可以被調(diào)用,它只是不會(huì)做任何事情。但至少這個(gè)示例程序不會(huì)崩潰。

    總結(jié)

    以上是生活随笔為你收集整理的arduino使用oled代码_实用!Arduino平台最强大的“显卡”驱动:Adafruit GFX 图形库8000字详细使用指南...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    91手机电视 | 免费精品久久久 | 99久久99视频只有精品 | 性色av免费看| 亚洲美女精品区人人人人 | 婷婷四房综合激情五月 | 国产99色 | 国产精品精 | 成人性生交视频 | 一区二区网 | 成人亚洲综合 | 成年人黄色免费看 | 精品国模一区二区三区 | 夜夜操天天 | 天天做日日做天天爽视频免费 | 欧美日韩伦理一区 | avcom在线| 日韩视频一二三区 | av黄色影院 | 久免费视频 | 色婷婷亚洲综合 | 综合久久久久久久 | 日韩精品你懂的 | 亚洲精品乱码久久久久久高潮 | 免费观看日韩av | 亚洲高清色综合 | 国产精品亚洲精品 | 在线看国产 | 亚洲黄色小说网 | 久久综合久久综合久久综合 | 久久久久久美女 | 久久久亚洲电影 | 欧美婷婷色 | 日韩午夜在线播放 | 天天av在线播放 | 免费成人黄色av | 日韩视频免费播放 | av九九九 | 亚洲精品一区二区久 | 色瓜 | 国产精品成人免费精品自在线观看 | 免费热情视频 | 国产高清av | 天天操天天操天天操天天操天天操天天操 | 91tv国产成人福利 | 国产五月| 91精品夜夜 | 国产精品久久久久久久久婷婷 | 亚洲91精品在线观看 | 免费影视大全推荐 | 国产精品久久久久婷婷二区次 | 丁香婷婷久久 | 香蕉视频最新网址 | 毛片随便看 | 亚洲在线综合 | a v在线视频 | 亚洲一区美女视频在线观看免费 | 亚洲精品黄色 | 久久精品永久免费 | 国产精品九九久久久久久久 | 亚洲伊人网在线观看 | 午夜精选视频 | 狠狠狠干| 国产成人免费av电影 | av中文电影| 亚洲网站在线看 | 亚洲精品字幕在线 | 蜜桃视频精品 | 欧美人zozo | 国产精品黑丝在线观看 | 91在线看黄 | 亚洲精品男人天堂 | 欧美激情视频在线免费观看 | av一二三区 | 天天做夜夜做 | 一区二区欧美在线观看 | 久久免费国产视频 | 久久毛片网 | 日本3级在线观看 | 在线播放精品一区二区三区 | 超碰在线9 | 欧美a级在线播放 | 久久激情综合网 | 91精品天码美女少妇 | 97色婷婷成人综合在线观看 | 日本精品视频在线观看 | 九九免费在线观看视频 | 久草久草在线观看 | 狠狠色噜噜狠狠狠狠2021天天 | 九色精品免费永久在线 | 一区二区三区精品久久久 | 国产成人精品一区二区三区在线 | 成人黄色短片 | 久久精品一二三区 | 亚洲欧美成人在线 | 国产精品久久久久久久久久免费看 | 最新av免费在线观看 | 日本三级中文字幕在线观看 | 中文字幕国语官网在线视频 | 黄色资源在线观看 | 久久99婷婷 | 在线观看视频免费大全 | 国产精品99视频 | 日本不卡123区| 日三级在线 | 色综合久久精品 | 一区二区视频播放 | 成人免费视频观看 | 色中色亚洲 | 夜夜操天天操 | 免费在线观看不卡av | 精品国产一区二区久久 | 爱爱一区 | 玖玖在线精品 | 涩涩网站在线看 | 97国产在线播放 | 国产美女精品久久久 | 又爽又黄又无遮挡网站动态图 | 69国产精品成人在线播放 | 天天操天天射天天舔 | 欧美一级电影在线观看 | 亚洲日本va午夜在线电影 | 97偷拍视频 | 99亚洲视频 | 久久久久国产精品一区 | 免费观看高清 | 国产精品一区二区三区在线免费观看 | 久久精品国产精品亚洲 | 亚洲视频精品在线 | 人人爱爱| 欧美日韩在线网站 | 成人毛片a | 精品成人国产 | 五月天com| 成年人在线视频观看 | av黄色在线播放 | 2024国产精品视频 | 深爱激情亚洲 | 亚洲精品久久久久久国 | 四虎成人精品在永久免费 | 午夜视频在线观看一区二区三区 | 色久综合 | 美女网站在线免费观看 | 日韩av成人在线 | 国产精品你懂的在线观看 | 麻花豆传媒一二三产区 | 99久久婷婷 | 亚洲闷骚少妇在线观看网站 | 亚洲欧洲精品一区二区精品久久久 | 久久av网址 | 国产精品一区二区av影院萌芽 | 伊人亚洲精品 | 午夜电影 电影 | 欧美日韩不卡在线视频 | 综合在线亚洲 | 国产精品久久久免费 | 色在线免费视频 | 在线免费观看国产视频 | 91在线精品秘密一区二区 | 激情图片久久 | 国产精品18久久久久白浆 | 日韩av在线免费看 | 久久久久久久久久久久久久电影 | 成人黄色电影在线 | 免费视频一区 | 狠狠gao | 久久超级碰| 国产中文字幕视频在线 | 久久精品一二三 | 国产美女精品视频 | 久久人人爽视频 | 中文av在线免费观看 | 欧美激情综合五月色丁香小说 | 久久激五月天综合精品 | 亚洲成人资源在线 | 欧美小视频在线 | 91成人免费视频 | 成人欧美一区二区三区在线观看 | 免费在线观看午夜视频 | 蜜桃视频日韩 | 亚洲人天堂| 日日操网站 | 亚洲 欧美 变态 国产 另类 | 久久成人国产精品一区二区 | 国产拍揄自揄精品视频麻豆 | 91漂亮少妇露脸在线播放 | 丁香花在线观看免费完整版视频 | 探花视频在线观看免费版 | 99爱精品在线 | 免费在线观看毛片网站 | 成人午夜片av在线看 | 国产二区精品 | 久久人人爽人人片 | 国产短视频在线播放 | 久久玖| zzijzzij亚洲日本少妇熟睡 | 91网在线看| 亚洲精品久久激情国产片 | 狠狠色噜噜狠狠 | 中文字幕亚洲精品日韩 | 伊人日日干 | 亚一亚二国产专区 | 中文字幕免费高清在线观看 | 亚洲精品视频免费观看 | 视频国产区 | 又黄又爽又刺激视频 | 国产小视频国产精品 | 亚洲美女在线国产 | 久久久久中文字幕 | 最近免费中文字幕大全高清10 | 久久av高清| 国产91精品看黄网站在线观看动漫 | 国产最新视频在线观看 | 黄色av免费看 | 色妞色视频一区二区三区四区 | 精品久久久久久电影 | 久草视频免费 | 日韩欧美视频在线 | 国产在线日韩 | 中文字幕av免费观看 | 香蕉久久国产 | 久久久久久高潮国产精品视 | 免费看国产曰批40分钟 | 欧美三级高清 | 99爱精品视频 | 免费成人在线观看 | 夜夜操网站 | 91福利影院在线观看 | 婷婷久草 | 中文字幕高清在线 | 久久精品久久久久电影 | 2022国产精品视频 | 色综合欧洲 | 欧美日韩国产一区二区在线观看 | 97免费中文视频在线观看 | 日本中文字幕在线免费观看 | 免费网站看v片在线a | 亚洲春色奇米影视 | 欧美日韩免费视频 | 免费观看性生交大片3 | 少妇视频一区 | 亚洲欧美国内爽妇网 | 精品国内自产拍在线观看视频 | 亚洲国产日韩欧美在线 | 国产不卡精品视频 | 99精品久久久 | 国产伦理一区二区三区 | 国产免费又爽又刺激在线观看 | 日本中文字幕影院 | 欧美少妇影院 | 久久精选视频 | 午夜视频免费在线观看 | 97人人网 | 深夜免费福利视频 | 国产在线观看h | 午夜久久视频 | av免费在线看网站 | av大片免费看 | 国产精品伦一区二区三区视频 | 97超碰影视 | 亚洲国产视频在线 | 欧美三级在线播放 | 青青河边草免费直播 | 在线观看免费国产小视频 | 97视频播放 | 91精品国产综合久久福利 | 成人久久综合 | 91视频在线国产 | 日韩欧美专区 | 亚洲影音先锋 | 欧美日本在线观看视频 | 五月婷婷国产 | 91亚色视频 | 成人理论在线观看 | 欧美性一级观看 | 久久涩视频 | 免费人成在线观看 | 欧美日韩国产亚洲乱码字幕 | 狠狠狠色丁香婷婷综合久久88 | 99视频在线免费播放 | 亚洲成人蜜桃 | 丰满少妇对白在线偷拍 | 久久久久高清毛片一级 | 黄色片免费在线 | 久久久穴 | 日韩特级毛片 | 久久黄色影视 | 午夜精品久久久久久久99 | 免费av观看网站 | 五月天综合激情 | 久99久视频 | 最新日韩视频 | 高清国产在线一区 | 久草在线91 | 国产伦精品一区二区三区无广告 | 亚洲深夜影院 | 天堂av中文字幕 | 蜜桃视频精品 | 手机在线日韩视频 | 中文字幕精品视频 | 国产精品毛片久久久 | 久久久久夜色 | 中文字幕一区二区三区乱码不卡 | 99久久精品国 | 精品国内自产拍在线观看视频 | 激情五月五月婷婷 | 精品美女久久久久 | www国产亚洲精品久久麻豆 | av先锋中文字幕 | 伊香蕉大综综综合久久啪 | 亚洲精品免费看 | 1024手机基地在线观看 | 91成人区| 日韩一区二区三区视频在线 | 中文字幕精品视频 | 91视频传媒 | 国产91全国探花系列在线播放 | 亚洲天天干 | 日本3级在线观看 | av大片免费在线观看 | 国产精品99久久久久的智能播放 | 五月丁香| 欧美亚洲一级片 | 欧美黑人xxxx猛性大交 | 精品国产伦一区二区三区免费 | 亚洲精品综合欧美二区变态 | 激情欧美丁香 | 韩国精品视频在线观看 | 在线观看色视频 | 国产精品乱码久久久久 | 亚洲精品国产综合99久久夜夜嗨 | 欧美做受高潮1 | 久久免费视频在线观看 | 亚洲国产精品500在线观看 | 91精品国产乱码久久桃 | 日韩高清精品免费观看 | 国产亚洲精品成人av久久影院 | 成人a v视频| 欧美 日韩 国产 中文字幕 | 天天插综合 | 欧美一级片免费播放 | 久久久免费在线观看 | 五月婷婷一级片 | 国产资源精品在线观看 | 国产亚洲精品久 | 在线观看色网站 | 日韩久久激情 | 精品亚洲免费 | 国产精品aⅴ | 91麻豆高清视频 | 天天操天天干天天爱 | 日韩乱色精品一区二区 | 亚洲欧洲一区二区在线观看 | 精品主播网红福利资源观看 | 久久免费的精品国产v∧ | 国产裸体无遮挡 | 韩国三级一区 | 欧美午夜精品久久久久 | 亚洲无在线 | 91亚洲免费| 成人资源在线观看 | 男女免费视频观看 | 日韩欧美在线观看一区二区 | 亚洲资源一区 | www久久| 九九九热精品 | 人人干天天干 | 99精品国产高清在线观看 | 国产精品孕妇 | 四虎影视成人永久免费观看视频 | 狠狠色狠狠综合久久 | 欧美色图亚洲图片 | 久操97 | 日韩视频免费 | 97精品在线视频 | 美女免费视频一区二区 | 国产99re| 日韩视频免费在线观看 | 久久久激情视频 | 日韩精品不卡在线 | 日韩理论在线 | 天天干 天天摸 天天操 | 亚洲va在线va天堂 | 波多野结衣电影一区二区 | 中国美女一级看片 | 日本性久久 | 久久免费在线视频 | 国产精品一区久久久久 | 黄色字幕网 | 日本三级不卡视频 | 超碰97人人在线 | 久久热首页 | 91重口视频| 久久66热这里只有精品 | 国产一区二区久久久久 | 天堂av中文字幕 | 婷婷丁香av | 久草在线视频网 | 日韩视频图片 | 国产精品永久久久久久久www | 亚洲 精品在线视频 | 色婷婷中文 | 天天干天天玩天天操 | 顶级欧美色妇4khd | 亚洲国产日韩精品 | 国产精品视频在线看 | 中文字幕 成人 | 一区二区三区视频网站 | 天堂va欧美va亚洲va老司机 | 91自拍91 | 精品电影一区二区 | 成人不用播放器 | 色在线观看网站 | 97久久精品午夜一区二区 | 波多野结衣动态图 | 免费看黄网站在线 | 亚洲影院一区 | 色视频网站在线观看一=区 a视频免费在线观看 | 97在线视频观看 | 精品欧美一区二区三区久久久 | 日韩www在线 | 国产精品中文久久久久久久 | 激情视频二区 | 亚洲美女免费视频 | 97夜夜澡人人双人人人喊 | 久久爱www.| 久久久麻豆视频 | 久久久免费精品国产一区二区 | 免费看av片网站 | 免费黄色特级片 | 午夜精品一区二区三区在线 | 国产精品初高中精品久久 | 国产99久久久国产精品成人免费 | 天天干,天天草 | 综合色天天 | 国产精品露脸在线 | 欧美视频在线观看免费网址 | 国产精品99久久久久 | 中文国产字幕在线观看 | 91在线网址 | 97在线观看视频免费 | 国产精品一区久久久久 | 国内精品久久久久久久久久久 | 丁香激情综合久久伊人久久 | 九九热视频在线 | 九九天堂 | 激情婷婷 | 91在线一区 | 色欧美88888久久久久久影院 | 日韩精品专区在线影院重磅 | 精品久久久久久久久久久久 | 国产精品一区二区三区电影 | 久久久久9999亚洲精品 | 超碰97在线资源 | 国产麻豆视频在线观看 | 一区二区三区 中文字幕 | 日韩三级在线观看 | 日韩黄色中文字幕 | a视频在线播放 | 网站在线观看你们懂的 | 四虎成人精品永久免费av | 97在线视频免费播放 | 国内偷拍精品视频 | 成人在线免费视频观看 | 黄色三级在线 | 国产又粗又猛又黄又爽的视频 | 国产成人免费观看久久久 | 久久久国内精品 | 国产成人一级 | 婷婷久久网站 | 久久久久久久久免费 | 日韩久久久久久久 | 国产小视频91 | 久草在线免费看视频 | 激情网婷婷 | 91av在线不卡 | 97电影在线观看 | 亚洲成年人在线播放 | av片子在线观看 | 狠狠狠色丁香婷婷综合久久五月 | 欧美日韩免费观看一区=区三区 | 国产精品免费视频观看 | 久久亚洲福利 | 国产精品岛国久久久久久久久红粉 | 亚洲国产中文字幕 | 国产日产亚洲精华av | av在线播放一区二区三区 | 在线视频一二区 | 在线观看视频国产 | 国产精品免费一区二区 | 亚洲1级片 | 91视频久久久久 | 久草99 | 久久久久久免费 | 91人人视频在线观看 | 精品在线观 | 99精品视频99 | 91看毛片 | 在线观看视频国产 | 91视频下载 | 激情视频在线观看网址 | 美女免费黄视频网站 | 精品一区二区在线免费观看 | 狠狠干婷婷 | 69亚洲精品| 91精品国产91久久久久福利 | 毛片区 | www免费看| 蜜桃av久久久亚洲精品 | www激情网| 国产免费观看久久 | 人人射人人射 | 色综合亚洲精品激情狠狠 | 婷婷丁香激情五月 | 久久婷婷视频 | 欧美激情精品久久久久 | 国产成人免费av电影 | 99久久久成人国产精品 | 国产日韩视频在线观看 | 久久人人看| 一级免费av | 开心丁香婷婷深爱五月 | 国产精品久久久久久久久久久久久 | 91视频91自拍 | 国产高清小视频 | 亚洲国产剧情 | 日韩高清观看 | 69国产精品视频 | 99在线看 | 久草在线官网 | 国产婷婷在线观看 | 国产免费国产 | 在线观看亚洲成人 | 日本aaa在线观看 | 九九九九免费视频 | 国产高清久久久 | 久操视频在线免费看 | 99视频在线看 | 久久综合中文字幕 | 天天干天天做天天爱 | 91久久影院 | 久久综合日 | 久久人人97超碰国产公开结果 | 91一区二区在线 | www好男人| 久久久精品网 | 成人av在线影视 | 国产精品久久中文字幕 | 国产视频亚洲 | 久久精品毛片基地 | 久草97| 一区 二区电影免费在线观看 | 激情电影影院 | 亚洲精品日韩一区二区电影 | 日韩精品视频网站 | 狠狠撸电影 | 99精品免费久久久久久久久日本 | 99热在线观看免费 | 中文字幕中文字幕在线中文字幕三区 | 国产亚洲在线观看 | 国产精品电影一区二区 | 色多多污污 | 亚洲黄色影院 | 永久免费毛片 | 91精品电影 | 欧美精品久久久久久久久久白贞 | 精品99久久 | 国产在线第三页 | 国产91综合一区在线观看 | 国产成人精品一区二区在线 | 麻豆传媒电影在线观看 | 欧美性色19p| 亚洲精品视频在线观看免费视频 | 一级黄色a视频 | 91视频久久久 | 国内视频 | 99视频导航| 国产精品久久久久久久午夜片 | 在线免费91 | 成人a v视频 | 日一日干一干 | 日日婷婷夜日日天干 | 黄色三级av | 久久久久久久久久毛片 | 人人插人人草 | 四虎影视精品成人 | 久热免费在线观看 | 免费的黄色av | 欧美怡红院 | 91福利影院在线观看 | 99精品视频免费在线观看 | 国产福利一区在线观看 | 成在线播放 | 免费一级特黄毛大片 | 国内精品久久久久久久久久 | 午夜丁香视频在线观看 | 久久久精品成人 | 亚洲3级 | 在线小视频 | 日韩超碰在线 | 国产精品久久久一区二区 | 中文字幕精品三区 | 青青河边草免费观看完整版高清 | 日韩在线免费高清视频 | 亚洲综合情 | japanesefreesex中国少妇 | 99视频在线观看免费 | 毛片的网址 | 91色在线观看 | 亚洲成人网在线 | 麻豆精品传媒视频 | 激情在线免费视频 | 九九九九热精品免费视频点播观看 | 91精品无人成人www | 91av电影| 麻豆精品在线视频 | 91成人在线免费观看 | 免费看精品久久片 | 欧美aa在线 | 91中文在线视频 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 国产精品免费视频网站 | 97在线精品视频 | 一区二区三区在线免费观看视频 | 日韩视频 一区 | 狠狠婷婷| 国产一级片播放 | 精品国产乱码久久久久久浪潮 | 激情视频二区 | 国产在线观看免费观看 | 91丨九色丨蝌蚪丨老版 | avcom在线 | 中文字幕美女免费在线 | 久久69精品久久久久久久电影好 | 美女网站在线观看 | 色窝资源 | 免费在线观看av网站 | 亚洲美女免费精品视频在线观看 | 在线成人免费电影 | 欧美精品一区二区免费 | 亚洲国产中文字幕在线观看 | 久久综合久久综合九色 | 亚洲狠狠操 | 黄色三级网站在线观看 | 亚洲精品动漫在线 | 国产三级午夜理伦三级 | 911精品视频 | 狠狠色丁香婷婷综合橹88 | 国产对白av| 亚洲国内精品在线 | 国产高清在线视频 | 久久久久久久久久影院 | 国产精久久久久久妇女av | 婷婷六月天在线 | 99久热在线精品视频观看 | 69av免费视频| 99久久久久国产精品免费 | 国产精品一区二区白浆 | 国产色资源 | 精品中文字幕视频 | 一区二区三区国产精品 | 久色伊人 | 婷婷色综 | 欧美一二三视频 | 91精品国产九九九久久久亚洲 | avwww在线观看 | 97品白浆高清久久久久久 | 欧美日韩高清在线观看 | 日日夜夜操av | 九九视频这里只有精品 | 日韩在线视频播放 | 免费91麻豆精品国产自产在线观看 | 国产精品日韩久久久久 | 另类老妇性bbwbbw高清 | 国产一级性生活视频 | av网站在线免费观看 | 97精品国产91久久久久久 | 久久电影中文字幕视频 | 免费成人黄色片 | 国产色在线 | 99国产免费网址 | 国产精品视频全国免费观看 | 免费黄色av | 日韩欧美精品在线观看 | 成人黄色大片 | 在线观看视频色 | 国产视频 亚洲精品 | 超碰在线个人 | 日韩成人免费在线 | 欧美精品在线一区 | 波多野结衣一区 | 免费中文字幕视频 | 精品国偷自产在线 | 六月激情网 | 69视频国产 | 亚洲国产午夜视频 | 超碰在线成人 | 粉嫩高清一区二区三区 | 欧美日韩伦理在线 | ,午夜性刺激免费看视频 | 日本一区二区三区免费观看 | 中文字幕亚洲欧美 | www.com.黄| 久久99精品国产 | 亚洲日韩精品欧美一区二区 | av大片免费在线观看 | 中文字幕免费成人 | 九九色视频 | 日韩黄色软件 | 亚洲1区 在线 | 天天干天天射天天爽 | 国产色黄网站 | 成人av高清在线观看 | 久久久一本精品99久久精品 | 色婷婷av一区二 | 色久综合| 又黄又刺激又爽的视频 | 成人免费观看av | 韩日电影在线观看 | 日本视频久久久 | 国产一级片免费播放 | 91视频在线观看大全 | 91精品免费在线观看 | 免费十分钟 | 99视频一区 | 99免费| 国产精品女视频 | 精品国产自| 日韩免费网址 | 国产精品私人影院 | 欧美与欧洲交xxxx免费观看 | 91精品国产九九九久久久亚洲 | 五月天狠狠操 | 中文字幕美女免费在线 | 欧美肥妇free | 久久不卡电影 | 亚洲精品黄色在线观看 | 久久久人 | 精品国产欧美 | 国产欧美日韩精品一区二区免费 | 欧美人人爱 | 欧美日韩久久不卡 | 99视频在线免费看 | 精品国产免费av | 在线免费观看一区二区三区 | 日韩欧美aaa | 亚洲精品国产精品国产 | 激情视频国产 | 国产成人精品亚洲a | 特级黄录像视频 | 亚洲精品视频在线观看免费 | 色综合色综合久久综合频道88 | 五月婷婷综 | 性日韩欧美在线视频 | 97超碰中文 | 国产精品久久久久久一区二区 | 欧美激情片在线观看 | 久久久久久久久黄色 | 欧美国产在线看 | 国产精品永久在线观看 | 中日韩免费视频 | 久久久久99精品成人片三人毛片 | 久久超碰97 | 午夜av日韩 | 日韩亚洲欧美中文字幕 | 久久 精品一区 | 国产精品18久久久久久久网站 | 特级西西人体444是什么意思 | 一区二区三区四区五区在线 | 亚洲在线视频网站 | 中文字幕在线播放av | 福利电影一区二区 | 97香蕉久久国产在线观看 | 91中文字幕在线播放 | 免费黄色特级片 | 国产一级性生活视频 | 国产不卡在线播放 | 美女免费黄网站 | 国产精品自产拍在线观看 | 毛片888| 中文字幕日本电影 | 综合久久久久 | 丁香网婷婷 | 一级一片免费观看 | 激情网婷婷 | 久久久久福利视频 | 又黄又刺激又爽的视频 | 国产不卡一 | .精品久久久麻豆国产精品 亚洲va欧美 | 伊人资源视频在线 | 亚洲精品综合在线 | www.玖玖玖| 亚洲精品成人网 | 亚洲人成免费网站 | 久久99久久99 | www91在线观看 | 欧美日韩在线网站 | 成人黄色av免费在线观看 | 久久精品综合网 | 超碰97在线看 | 久久成年人视频 | 精品视频久久久 | 日韩成人在线免费观看 | 九九免费在线观看 | avlulu久久精品 | 91成人国产 | 毛片网免费| 丁香六月中文字幕 | 美女视频黄色免费 | 91电影福利 | 97理论电影| 激情综合网色播五月 | 欧美视频日韩 | 91精品老司机久久一区啪 | 在线国产观看 | 免费在线观看中文字幕 | 久久久精品国产一区二区三区 | 韩国av免费观看 | 成人免费观看完整版电影 | 亚洲午夜久久久综合37日本 | 中文在线8资源库 | 国产免费三级在线观看 | 日韩免费播放 | av三级av| 97成人精品区在线播放 | av在线播放亚洲 | 久久综合干 | 日韩午夜一级片 | 久久人人爽人人 | 欧美精品久久久久久久亚洲调教 | 五月婷婷中文网 | 91麻豆免费视频 | 激情图片qvod | 一级全黄毛片 | 日韩成人免费观看 | 日韩精品久久久久久 | 欧美a性| a黄色一级 | 热久久最新地址 | 国产一区在线看 | 青青河边草手机免费 | 欧美一区日韩一区 | 亚洲成熟女人毛片在线 | 中文字幕在线观看av | 国产精品免费高清 | 日韩美一区二区三区 | 久久久久久久久久久久久影院 | 免费看三级黄色片 | 97超碰国产精品女人人人爽 | 色丁香色婷婷 | 麻豆传媒视频在线播放 | 精品国内自产拍在线观看视频 | 国产精品亚洲a | 国产午夜一区二区 | 国产韩国精品一区二区三区 | 中文字幕在线电影 | 天堂av色婷婷一区二区三区 | 精品主播网红福利资源观看 | 欧美韩日精品 | 激情久久久久久久久久久久久久久久 | 美女视频黄是免费的 | 蜜桃av观看 | 91在线看视频 | 91精品资源 | 欧美日韩在线精品 | 808电影免费观看三年 | 天天曰夜夜爽 | 久久亚洲综合国产精品99麻豆的功能介绍 | 一区二区三区四区免费视频 | 日韩高清久久 | 啪啪免费观看网站 | 久草在线在线精品观看 | 精品亚洲午夜久久久久91 | 午夜视频欧美 | 91在线播放视频 | 日本一区二区三区免费观看 | 99免费看片 | 日韩精品免费一区 | 在线91视频 | 狠狠色丁香婷婷综合欧美 | 麻豆精品视频 | 国产伦精品一区二区三区无广告 | 亚洲国产高清在线 | 91色吧| 国产精品午夜在线观看 | 亚洲精品久久久久中文字幕二区 | 久久黄色小说视频 | 久草在线资源免费 | 日日夜夜婷婷 | 欧美另类重口 | 国产一区二区不卡在线 | 欧美日韩一区二区在线观看 | 日韩在线视 | 欧美一区二区三区激情视频 | 亚洲1区在线 | 综合五月婷婷 | 国产在线色| 婷婷色狠狠 | 亚洲欧美日韩一区二区三区在线观看 | 欧美日韩精品在线观看 | 久久精品免费看 | 麻豆视频在线免费 | 久久综合狠狠综合久久狠狠色综合 | 日韩二区三区 | 色成人亚洲网 | 91精品国产自产老师啪 | 日韩最新av| 青青河边草免费直播 | 丝袜美腿在线 | 亚洲精品乱码久久久久 | 免费av高清 | 天天草天天操 | 韩日精品在线观看 | 婷婷综合av| 97干com| 黄色成人av网址 | www.亚洲在线| 国产又粗又猛又爽又黄的视频先 | 日韩欧美国产精品 | www五月 | 97在线观看免费观看 | 久久99国产精品久久 | 六月天色婷婷 | av免费看网站 | 欧美在线一级片 | 高清av在线免费观看 | 黄色的网站免费看 | 五月开心色 | 国产做aⅴ在线视频播放 | 午夜私人影院 | 成人免费观看视频大全 | 国产精品专区在线观看 | 不卡av电影在线观看 | 亚洲一区二区三区在线看 | 国产精品久久久久久久久久东京 | 国产精品18久久久久久vr | 天天干,天天操 | 亚洲伦理一区二区 | 日本韩国精品一区二区在线观看 | 日本xxxx.com | 在线观看黄网站 | 成人av观看 | 日韩在线视频线视频免费网站 | 日韩在线电影一区 | 91热精品| 国产91在线免费视频 | 国产精品 国产精品 | 在线观看亚洲免费视频 | 日韩精品免费一区二区在线观看 | 中文字幕色在线 | 人人超在线公开视频 | 久久艹欧美 | 久久精品免视看 | 五月天亚洲综合 | 操高跟美女 | 国产精品不卡在线 | 亚洲成人av片 | 国产精品二区三区 | 92国产精品久久久久首页 | 在线观看av国产 | 在线观看v片 | 天天操天天曰 | 国产伦精品一区二区三区无广告 | 久久国产视屏 | 黄色av高清 | 9在线观看免费高清完整版在线观看明 | 在线免费观看视频你懂的 | 激情久久伊人 | 国产黄色免费在线观看 | 国产精品夜夜夜一区二区三区尤 | 九色精品免费永久在线 | 久久久久久伊人 | 亚洲天堂网站视频 | 久久视屏网 | 久久精品国产亚洲 | 久久精品首页 | 欧美极度另类 | 国产91成人在在线播放 | 美女网站视频久久 | www.五月激情.com | 日韩免费中文 | 久综合网 | 色噜噜狠狠狠狠色综合 | 亚洲国产字幕 | 亚州人成在线播放 | 韩日成人av | 免费视频黄色 | 亚洲黄a| 在线精品视频在线观看高清 | 国产成人精品女人久久久 | 欧美日高清视频 | av在线免费观看不卡 | 丁香久久五月 | 亚洲 中文字幕av | 国产成人免费观看 | 欧美a√大片| 91精品国自产在线观看 | 日韩网站在线 |