arduino esp32——一篇完全搞懂u8g2 从此无需担心oled使用

文章目录


U8g2

U8g2 库提供了丰富的函数来操作和控制显示器。以下是 U8g2 中各种常用函数的详细介绍,包括函数作用、原型、参数、返回值以及可能的值。对于函数的重载,我也会一一列出。

1. begin

作用:

初始化显示器。

原型:
void begin();
参数:

无。

返回值:

无。

谢谢提醒!确实漏掉了这两个 U8G2::begin() 的重载版本。以下是这两个重载版本的详细介绍:


1. bool U8G2::begin(void)

作用:

初始化显示器,使用默认的引脚设置进行配置。通常用于简单的显示初始化,不涉及复杂的硬件控制或用户输入。

原型:
bool U8G2::begin(void);
参数:

无参数。

返回值:
  • 返回 true 如果初始化成功。
  • 返回 false 如果初始化失败。

2. bool U8G2::begin(uint8_t menu_select_pin, uint8_t menu_next_pin, uint8_t menu_prev_pin, uint8_t menu_up_pin = U8X8_PIN_NONE, uint8_t menu_down_pin = U8X8_PIN_NONE, uint8_t menu_home_pin = U8X8_PIN_NONE)

作用:

此重载版本允许在初始化时指定与显示器交互的按键引脚,通常用于菜单系统或用户输入功能。可以指定用于选择、下一个、上一个、向上、向下、主页等的按钮引脚。此重载版本特别适合于那些需要物理按键进行菜单导航的应用。

原型:
bool U8G2::begin(uint8_t menu_select_pin, uint8_t menu_next_pin, uint8_t menu_prev_pin, uint8_t menu_up_pin = U8X8_PIN_NONE, uint8_t menu_down_pin = U8X8_PIN_NONE, uint8_t menu_home_pin = U8X8_PIN_NONE);
参数:
  • menu_select_pin:选择按钮的引脚。
  • menu_next_pin:下一个按钮的引脚。
  • menu_prev_pin:上一个按钮的引脚。
  • menu_up_pin(可选):向上按钮的引脚,默认为 U8X8_PIN_NONE(表示没有定义此按钮)。
  • menu_down_pin(可选):向下按钮的引脚,默认为 U8X8_PIN_NONE(表示没有定义此按钮)。
  • menu_home_pin(可选):主页按钮的引脚,默认为 U8X8_PIN_NONE(表示没有定义此按钮)。
返回值:
  • 返回 true 如果初始化成功。
  • 返回 false 如果初始化失败。

备注:

  • U8X8_PIN_NONE 是一个特殊的值,用来表示未指定某个引脚,这些可选的引脚参数通常用于更复杂的用户交互,尤其是在带有菜单或物理按钮输入的应用场景中。

这两个 begin 重载版本的区别在于,第一个版本是最简单的初始化方法,而第二个版本则允许你配置更多与用户输入相关的引脚,以便控制菜单或交互逻辑。


2. clear

作用:

清除整个显示器的内容。

原型:
void clear();
参数:

无。

返回值:

无。


3. clearBuffer

作用:

清除显示缓存,但不更新显示器。可以在发送内容之前先清空缓存。

原型:
void clearBuffer();
参数:

无。

返回值:

无。


4. clearDisplay

作用:

清除显示屏内容并更新显示器。

原型:
void clearDisplay();
参数:

无。

返回值:

无。


5. disableUTF8Print

作用:

禁用 UTF-8 字符打印功能。

原型:
void disableUTF8Print();
参数:

无。

返回值:

无。


6. drawArc

作用:

绘制一个弧形。

原型:
void drawArc(int x, int y, int radius, int startAngle, int endAngle);
参数:
  • x:弧心的 x 坐标。
  • y:弧心的 y 坐标。
  • radius:弧的半径。
  • startAngle:起始角度(以度为单位)。
  • endAngle:结束角度(以度为单位)。
返回值:

无。


7. drawBitmap

作用:

绘制位图图像。

原型:
void drawBitmap(int x, int y, int width, int height, const uint8_t *bitmap);
参数:
  • x:位图左上角的 x 坐标。
  • y:位图左上角的 y 坐标。
  • width:位图宽度。
  • height:位图高度。
  • bitmap:指向位图数据的指针。
返回值:

无。


8. drawBox

作用:

绘制矩形。

原型:
void drawBox(int x, int y, int width, int height);
参数:
  • x:矩形左上角的 x 坐标。
  • y:矩形左上角的 y 坐标。
  • width:矩形宽度。
  • height:矩形高度。
返回值:

无。


9. drawButtonUTF8

作用:

绘制按钮(支持 UTF-8 字符)。

原型:
void drawButtonUTF8(int x, int y, int width, int height, const char *text);
参数:
  • x:按钮的左上角 x 坐标。
  • y:按钮的左上角 y 坐标。
  • width:按钮宽度。
  • height:按钮高度。
  • text:按钮显示的文本。
返回值:

无。


10. drawCircle

作用:

绘制圆形。

原型:
void drawCircle(int x, int y, int radius);
参数:
  • x:圆心的 x 坐标。
  • y:圆心的 y 坐标。
  • radius:圆的半径。
返回值:

无。


11. drawDisc

作用:

绘制实心圆(盘形)。

原型:
void drawDisc(int x, int y, int radius);
参数:
  • x:圆心的 x 坐标。
  • y:圆心的 y 坐标。
  • radius:圆的半径。
返回值:

无。


12. drawEllipse

作用:

绘制椭圆。

原型:
void drawEllipse(int x, int y, int width, int height);
参数:
  • x:椭圆的中心 x 坐标。
  • y:椭圆的中心 y 坐标。
  • width:椭圆的宽度。
  • height:椭圆的高度。
返回值:

无。


13. drawFilledEllipse

作用:

绘制填充椭圆。

原型:
void drawFilledEllipse(int x, int y, int width, int height);
参数:
  • x:椭圆的中心 x 坐标。
  • y:椭圆的中心 y 坐标。
  • width:椭圆的宽度。
  • height:椭圆的高度。
返回值:

无。


14. drawFrame

作用:

绘制一个边框框架。

原型:
void drawFrame(int x, int y, int width, int height);
参数:
  • x:框架左上角的 x 坐标。
  • y:框架左上角的 y 坐标。
  • width:框架的宽度。
  • height:框架的高度。
返回值:

无。


15. drawGlyph

作用:

绘制一个字符(单个图形元素)。

原型:
void drawGlyph(int x, int y, uint16_t code);
参数:
  • x:字符的 x 坐标。
  • y:字符的 y 坐标。
  • code:字符的编码(例如字母 ‘A’ 的编码)。
返回值:

无。


16. drawHLine

作用:

绘制水平线。

原型:
void drawHLine(int x, int y, int length);
参数:
  • x:水平线的起点 x 坐标。
  • y:水平线的起点 y 坐标。
  • length:水平线的长度。
返回值:

无。


17. drawLine

作用:

绘制一条线段。

原型:
void drawLine(int x1, int y1, int x2, int y2);
参数:
  • x1, y1:起点坐标。
  • x2, y2:终点坐标。
返回值:

无。


18. drawPixel

作用:

绘制一个像素点。

原型:
void drawPixel(int x, int y);
参数:
  • x:像素的 x 坐标。
  • y:像素的 y 坐标。
返回值:

无。


19. drawRBox

作用:

绘制一个圆角矩形。

原型:
void drawRBox(int x, int y, int width, int height, int radius);
参数:
  • x:矩形左上角的 x 坐标。
  • y:矩形左上角的 y 坐标。
  • width:矩形的宽度。
  • height:矩形的高度。
  • radius:圆角的半径。
返回值:

无。


20. drawRFrame

作用:

绘制带圆角的矩形边框。

原型:
void drawRFrame(int x, int y, int width, int height, int radius);
参数:
  • x:矩形左上角的 x 坐标。
  • y:矩形左上角的 y 坐标。
  • width:矩形的宽度。
  • height:矩形的高度。
  • radius:圆角的半径。
返回值:

无。


21. drawStr

作用:

绘制一个字符串。

原型:
void drawStr(int x, int y, const char *str);
参数:
  • x:字符串的起始 x 坐标。
  • y:字符串的起始 y 坐标。
  • str:要绘制的字符串。
返回值:

无。


22. drawTriangle

作用:

绘制一个三角形。

原型:
void drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3);
参数:
  • x1, y1:第一个顶点坐标。

  • x2, y2:第二个顶点坐标。

  • x3, y3:第三个顶点坐标。

返回值:

无。


23. drawUTF8

作用:

绘制 UTF-8 编码的字符串。

原型:
void drawUTF8(int x, int y, const char *str);
参数:
  • x:字符串的起始 x 坐标。
  • y:字符串的起始 y 坐标。
  • str:UTF-8 编码的字符串。
返回值:

无。


24. drawVLine

作用:

绘制垂直线。

原型:
void drawVLine(int x, int y, int length);
参数:
  • x:垂直线的起点 x 坐标。
  • y:垂直线的起点 y 坐标。
  • length:垂直线的长度。
返回值:

无。


25. drawXBM

作用:

绘制 XBM 格式的图像。

原型:
void drawXBM(int x, int y, const uint8_t *bitmap);
参数:
  • x:图像的左上角 x 坐标。
  • y:图像的左上角 y 坐标。
  • bitmap:XBM 格式的图像数据。
返回值:

无。


26. drawXBMP

作用:

绘制 XBMP 格式的图像。

原型:
void drawXBMP(int x, int y, int width, int height, const uint8_t *bitmap);
参数:
  • x:图像的左上角 x 坐标。
  • y:图像的左上角 y 坐标。
  • width:图像宽度。
  • height:图像高度。
  • bitmap:位图数据。
返回值:

无。


27. enableUTF8Print

作用:

启用 UTF-8 打印功能。

原型:
void enableUTF8Print();
参数:

无。

返回值:

无。


28. firstPage

作用:

开始显示页面的绘制。用于分页显示。

原型:
bool firstPage();
参数:

无。

返回值:

返回 true 表示可以开始绘制第一页。


29. getAscent

作用:

获取字体的上升线(字符的顶部)。

原型:
int getAscent();
参数:

无。

返回值:

字体的上升线高度。


30. getDescent

作用:

获取字体的下降线(字符的底部)。

原型:
int getDescent();
参数:

无。

返回值:

字体的下降线高度。


31. getDisplayHeight

作用:

获取显示器的高度。

原型:
int getDisplayHeight();
参数:

无。

返回值:

显示器的高度。


32. getDisplayWidth

作用:

获取显示器的宽度。

原型:
int getDisplayWidth();
参数:

无。

返回值:

显示器的宽度。


33. getMaxCharHeight

作用:

获取字体的最大高度。

原型:
int getMaxCharHeight();
参数:

无。

返回值:

字体的最大高度。


34. getMaxCharWidth

作用:

获取字体的最大宽度。

原型:
huoqu
参数:

无。

返回值:

字体的最大宽度。


35. getMenuEvent

作用:

获取菜单事件(用于用户交互)。

原型:
int getMenuEvent();
参数:

无。

返回值:

返回菜单事件类型。


36. getStrWidth

作用:

获取字符串的宽度。

原型:
int getStrWidth(const char *str);
参数:
  • str:要测量的字符串。
返回值:

字符串的宽度。


37. getU8g2

作用:

获取 U8g2 对象。

原型:
U8g2 &getU8g2();
参数:

无。

返回值:

返回 U8g2 对象的引用。


38. getU8x8

作用:

获取 U8x8 对象。

原型:
U8x8 &getU8x8();
参数:

无。

返回值:

返回 U8x8 对象的引用。


39. getUTF8Width

作用:

获取 UTF-8 字符串的宽度。

原型:
int getUTF8Width(const char *str);
参数:
  • str:UTF-8 编码的字符串。
返回值:

UTF-8 字符串的宽度。


40. getXOffsetGlyph

作用:

获取字形的偏移量。

原型:
int getXOffsetGlyph(uint16_t code);
参数:
  • code:字符编码。
返回值:

字形的 x 偏移量。


41. getXOffsetUTF8

作用:

获取 UTF-8 字符的 x 偏移量。

原型:
int getXOffsetUTF8(const char *str);
参数:
  • str:UTF-8 编码的字符串。
返回值:

UTF-8 字符的 x 偏移量。


42. home

作用:

将光标返回到原点 (0, 0)。

原型:
void home();
参数:

无。

返回值:

无。


43. initDisplay

作用:

初始化显示器。

原型:
void initDisplay();
参数:

无。

返回值:

无。


44. initInterface

作用:

初始化显示接口。

原型:
void initInterface();
参数:

无。

返回值:

无。


45. nextPage

作用:

继续到下一页的绘制。用于分页显示。

原型:
bool nextPage();
参数:

无。

返回值:

返回 true 表示可以继续绘制下一页。


46. print

作用:

打印内容。

原型:
void print(const char *str);
参数:
  • str:要打印的字符串。
返回值:

无。


47. sendBuffer

作用:

发送显示缓冲区的内容到显示器。

原型:
void sendBuffer();
参数:

无。

返回值:

无。


48. sendF

作用:

发送格式化内容到显示器。

原型:
void sendF(const char *format, ...);
参数:
  • format:格式化字符串。
返回值:

无。


49. setAutoPageClear

作用:

设置自动清除页面的模式。

原型:
void setAutoPageClear(bool enable);
参数:
  • enable:启用或禁用自动清除页面。
返回值:

无。


50. setBitmapMode

作用:

设置位图模式。

原型:
void setBitmapMode(bool mode);
参数:
  • mode:启用或禁用位图模式。
返回值:

无。


51. setBusClock

作用:

设置总线时钟。

原型:
void setBusClock(uint32_t clock);
参数:
  • clock:总线时钟频率。
返回值:

无。


52. setClipWindow

作用:

设置剪裁窗口。

原型:
void setClipWindow(int x, int y, int width, int height);
参数:
  • x:剪裁区域的左上角 x 坐标。
  • y:剪裁区域的左上角 y 坐标。
  • width:剪裁区域的宽度。
  • height:剪裁区域的高度。
返回值:

无。


53. setContrast

作用:

设置显示器的对比度。

原型:
void setContrast(uint8_t contrast);
参数:
  • contrast:对比度值。
返回值:

无。


54. setCursor

作用:

设置文本光标的位置。

原型:

void setCursor(int x, int y);

#### 参数:
- `x`:光标的 x 坐标。
- `y`:光标的 y 坐标。

#### 返回值:
无。

---

### 55. `setDisplayRotation`
#### 作用:
设置显示器的旋转角度。
#### 原型:
​```cpp
void setDisplayRotation(uint8_t rotation);
参数:
  • rotation:旋转角度(0、90、180 或 270)。
返回值:

无。


56. setDrawColor

作用:

设置绘制的颜色。

原型:
void setDrawColor(uint8_t color);
参数:
  • color:颜色(0 表示黑色,1 表示白色)。
返回值:

无。


57. setFlipMode

作用:

设置显示翻转模式。

原型:
void setFlipMode(bool flip);
参数:
  • flip:启用或禁用翻转。
返回值:

无。


58. setFont

作用:

设置字体。

原型:
void setFont(const uint8_t *font);
参数:
  • font:指向字体数据的指针。
返回值:

无。


59. setFontDirection

作用:

设置字体的方向。

原型:
void setFontDirection(uint8_t direction);
参数:
  • direction:字体的方向(0:正常,1:逆时针,2:顺时针)。
返回值:

无。


60. setFontMode

作用:

设置字体模式。

原型:
void setFontMode(uint8_t mode);
参数:
  • mode:字体模式。
返回值:

无。


61. setFontPosBaseline

作用:

设置字体的基线位置。

原型:
void setFontPosBaseline();
参数:

无。

返回值:

无。


62. setFontPosBottom

作用:

设置字体的底部位置。

原型:
void setFontPosBottom();
参数:

无。

返回值:

无。


63. setFontPosTop

作用:

设置字体的顶部位置。

原型:
void setFontPosTop();
参数:

无。

返回值:

无。


64. setFontPosCenter

作用:

设置字体的中心位置。

原型:
void setFontPosCenter();
参数:

无。

返回值:

无。


65. setFontRefHeightAll

作用:

设置字体的参考高度为所有字符的高度。

原型:
void setFontRefHeightAll();
参数:

无。

返回值:

无。


66. setFontRefHeightExtendedText

作用:

设置字体的参考高度为扩展文本的高度。

原型:
void setFontRefHeightExtendedText();
参数:

无。

返回值:

无。


67. setFontRefHeightText

作用:

设置字体的参考高度为普通文本的高度。

原型:
void setFontRefHeightText();
参数:

无。

返回值:

无。


68. setI2CAddress

作用:

设置 I2C 地址。

原型:
void setI2CAddress(uint8_t address);
参数:
  • address:I2C 地址。
返回值:

无。


69. setMaxClipWindow

作用:

设置最大剪裁窗口。

原型:
void setMaxClipWindow();
参数:

无。

返回值:

无。


70. setPowerSave

作用:

设置显示器的省电模式。

原型:
void setPowerSave(bool enable);
参数:
  • enable:启用或禁用省电模式。
返回值:

无。


71. updateDisplay

作用:

更新显示器。

原型:
void updateDisplay();
参数:

无。

返回值:

无。


72. updateDisplayArea

作用:

更新显示器的特定区域。

原型:
void updateDisplayArea(int x, int y, int width, int height);
参数:
  • x:区域左上角的 x 坐标。
  • y:区域左上角的 y 坐标。
  • width:区域的宽度。
  • height:区域的高度。
返回值:

无。


73. userInterfaceInputValue

作用:

提供用户界面的输入值。

原型:
void userInterfaceInputValue();
参数:

无。

返回值:

无。


74. userInterfaceMessage

作用:

显示用户界面信息。

原型:
void userInterfaceMessage();
参数:

无。

返回值:

无。


75. userInterfaceSelectionList

作用:

显示用户界面选择列表。

原型:
void userInterfaceSelectionList();
参数:

无。

返回值:

无。


76. writeBufferPBM

作用:

以 PBM 格式写入缓冲区。

原型:
void writeBufferPBM();
参数:

无。

返回值:

无。


77. writeBufferPBM2

作用:

以 PBM 格式写入缓冲区(第二种方式)。

原型:
void writeBufferPBM2();
参数:

无。

返回值:

无。


78. writeBufferXBM

作用:

以 XBM 格式写入缓冲区。

原型:
void writeBufferXBM();
参数:

无。

返回值:

无。


79. writeBufferXBM2

作用:

以 XBM 格式写入缓冲区(第二种方式)。

原型:
void writeBufferXBM2();
参数:

无。

返回值:

无。


80. getBufferSize

作用:

获取显示缓冲区的大小。

原型:
size_t getBufferSize();
参数:

无。

返回值:

显示缓冲区的大小。


81. setBufferPtr

作用:

设置显示缓冲区指针。

原型:
void setBufferPtr(uint8_t *ptr);
参数:
  • ptr:指向缓冲区的指针。
返回值:

无。


82. getBufferPtr

作用:

获取显示缓冲区指针。

原型:
uint8_t* getBufferPtr();
参数:

无。

返回值:

返回指向缓冲区的指针。


83. getBufferTileHeight

作用:

获取缓冲区的 tile 高度。

原型:
int getBufferTileHeight();
参数:

无。

返回值:

缓冲区 tile 的高度。


84. getBufferTileWidth

作用:

获取缓冲区的 tile 宽度。

原型:
int getBufferTileWidth();
参数:

无。

返回值:

缓冲区 tile 的宽度。


85. getBufferCurrTileRow

作用:

获取当前缓冲区的 tile 行数。

原型:
int getBufferCurrTileRow();
参数:

无。

返回值:

当前缓冲区的 tile 行数。


86. setBufferCurrTileRow

作用:

设置当前缓冲区的 tile 行数。

原型:
void setBufferCurrTileRow(int row);
参数:
  • row:tile 行数。
返回值:

无。

### ESP32U8G2使用教程 #### 硬件连接 对于ESP32和0.96英寸OLED屏幕之间的硬件连接,通常采用I2C接口进行通信。具体的接线方法如下: | ESP32 Pin | OLED Pin | |-----------|----------| | GND | GND | | VCC (3V3) | VCC | | GPIO 21 | SDA | | GPIO 22 | SCL | 这种配置允许通过I2C协议高效地传输数据至显示屏[^3]。 #### 安装U8g2库 为了能够在项目中利用U8g2的功能,在Arduino IDE环境中安装该库是必要的前提条件之一。可以通过Arduino IDE的库管理器来完成这一操作,只需搜索`U8g2 by Oliver Kraus`并点击安装即可。 #### 初始化代码设置 初始化过程中需指定特定于使用的显示器型号的对象实例化语句。针对SSD1306类型的0.96寸OLED屏,可参照下面的例子创建对象: ```cpp #include <Wire.h> #include <U8g2lib.h> // 创建对应于 SSD1306 I2C 的 U8g2 对象 U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); ``` 这段代码定义了一个基于软件I2C模式下的U8g2对象,其中`U8G2_R0`表示旋转方向,而最后一个参数设为`U8X8_PIN_NONE`意味着不需要外部复位引脚控制。 #### 示例程序展示 以下是一个完整的示例程序,它会在启动后向屏幕上打印一条消息,并每隔一秒更新一次时间戳: ```cpp void setup() { // 开始初始化U8g2u8g2.begin(); } void loop() { // 清除缓冲区 u8g2.clearBuffer(); // 设置字体大小 u8g2.setFont(u8g2_font_ncenB08_tr); // 打印字符串 "Hello World" u8g2.drawStr(0, 10, "Hello World"); // 获取当前毫秒数转换成字符数组形式的时间戳 char buffer[20]; sprintf(buffer, "%lu ms", millis()); // 将时间戳绘制到屏幕中央位置附近 u8g2.drawStr((u8g2.getDisplayWidth()-strlen(buffer)*7)/2 , 50, buffer); // 发送绘图命令给设备 u8g2.sendBuffer(); delay(1000); } ``` 此段代码实现了基本的文字输出功能,同时也展示了如何动态刷新显示内容的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人才程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值