12 OLED 屏幕-U8G2 库

文章作者:里海
来源网站:ESP32专栏


简介

    前面我们使用了 Adafruit_SSD1306 库,今天再用另一个库,这是 Arduino 平台上使用最广泛的 OLED 库 - U8g2 库。U8g2有很多优点:

  • 平台支持性好,兼容多款开发板。
  • 显示控制器支持性好,基本上市面上的 OLED 都完美支持;
  • API 众多,特别支持了中文,支持了不同字体。

安装

在这里插入图片描述

函数

基本函数

  • begin():初始化方法;
  • initDisplay():初始化显示控制器,这个方法不需要我们单独调用,会在 begin 函数主动调用一次,我们主要理解即可,会在里面针对具体的 OLED 进行配置;
  • clearDisplay():清除屏幕内容,这个方法不需要我们单独调用,会在 begin 函数主动调用一次,我们主要理解即可,并且不要在 firstPage 和 nextPage 函数之间调用该方法;
  • clear():清除操作;
  • clearBuffer():清除缓冲区;
  • enableUTF8Print():开启 Arduino 平台下支持输出 UTF8 字符集,我们的中文字符就是UTF8;
  • home():重置显示光标的位置,回到原点(0,0);

绘制相关函数

  • drawPixel():绘制像素点;
  • drawHLine():绘制水平线;
  • drawLine():两点之间绘制线
  • drawBox():画实心方形;
  • drawFrame():画空心方形
  • drawCircle():画空心圆;
  • drawDisc():画实心圆;
  • drawStr():绘制字符串,需要先设置字体,调用 setFont 方法;
  • drawXBM()/drawXBMP():绘制图像;
  • firstPage()/nextPage():绘制命令,firstPage 方法会把当前页码位置变成 0,修改内容处于 firstPage 和 nextPage 之间,每次都是重新渲染所有内容;
  • print():绘制内容;显示配置相关函数
  • getDisplayHeight():获取显示器的高度;
  • getDisplayWidth():获取显示器的宽度;
  • setCursor():设置绘制光标位置;
  • setDisplayRotation():设置显示器的旋转角度;
  • setFont():设置字体集(字体集用于字符串绘制方法或者glyph绘制方法);缓存相关函数
  • getBufferPtr():获取缓存空间的地址;
  • getBufferTileHeight():获取缓冲区的Tile高度,一个tile等于8个像素点;
  • getBufferTileWidth():获取缓冲区的Tile宽度;
  • getBufferCurrTileRow():获取缓冲区的当前Tile row;
  • clearBuffer():清除内部缓存区;
  • sendBuffer():发送缓冲区的内容到显示器。

U8g2 支持以下两种绘制模式:

  • Full screen buffer mode,全屏缓存模式;
  • Page mode,分页模式;

全屏缓存模式使用步骤:

  • 构造对象,根据 OLED 的型号选择对应的构造器,构造器必须带 F,因此,需要使用U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI
  • 初始化对象,使用 begin() 方法,清除缓冲区内容,使用 u8g2.clearBuffer()
  • 绘制内容,使用绘制函数或者设置字体等;
  • 发送缓冲区的内容到显示器 u8g2.sendBuffer()

在这里插入图片描述

什么是ESP32?

ESP32是近几年最受欢迎和最实用的模块之一。除了Wi-Fi模块,该模块还包含蓝牙4.0模块。双核CPU工作频率为80至240 MHz,包含两个Wi-Fi和蓝牙模块以及各种输入和输出引脚, ESP32是物联网项目的理想选择。
在这里插入图片描述

ESP32模块引脚分布

在这里插入图片描述
虽然ESP32的引脚数比常用的处理器少,但在引脚上复用多个功能时不会遇到任何问题。
警告:ESP32引脚的电压电平为3.3伏。如果要将ESP32连接到其他工作电压为5伏的设备,则应使用电平转换器转换电压电平。

  • 电源引脚:该模块有两个电源引脚 5V和3.3V。您可以使用这两个引脚来向其他设备和模块供电。
  • GND引脚:该模块的接地有3个引脚。
  • 启用引脚(EN):该引脚用于启用和禁用模块。引脚为高电平时启用模块,低电平禁用模块。
  • 输入/输出引脚(GPIO):您可以使用32个GPIO引脚与LED、开关和其他输入/输出设备进行通信。
    您可以在内部上拉或下拉这些引脚。
    注意:GPIO6至GPIO11引脚(SCK/CLK,SDO/SD0,SDI/SD1,SHD/SD2,SWP/SD3和SCS/CMD引脚)用于模块内部闪存的SPI通信,我们不建议使用它们。
  • ADC:您可以使用此模块上的16个ADC引脚将模拟电压(某些传感器的输出)转换为数字电压。其中一些转换器连接到内部放大器,能够以高精度测量小电压。
  • DAC:ESP32模块有两个数模转换器,精度为8位。
  • 触摸焊盘:ESP32模块上有10个引脚,对电容变化很敏感。您可以将这些引脚连接到某些焊盘(PCB上的焊盘),并将它们用作触摸开关。
  • SPI:该模块上有两个SPI接口,可用于连接显示屏、SD / microSD存储卡模块、外部闪存等。
  • I2C:SDA和SCL引脚用于I2C通信。
  • 串行通信(UART):该模块上有两个UART串行接口。使用这些引脚,您可以在两个设备之间传输高达5Mbps的信息。 UART0还具有CTS和RTS控制。
  • PWM:几乎所有ESP32输入/输出引脚都可用于PWM(脉冲宽度调制)。使用这些引脚可以控制电机、LED灯的亮度和RGB灯的颜色等。

ESP32模块模式

ESP32芯片有5种模式:

  • 活动模式:在这种模式下,Wi-Fi和蓝牙发射器和接收器的所有部分都是活动的。在这种情况下,电流消耗在80和260mA之间。
  • 调制解调器睡眠模式:处理器仍处于活动状态,但Wi-Fi和蓝牙已禁用。在这种情况下,电流消耗在3到20mA之间。
  • 轻度睡眠模式:主处理器停止工作,但RTC单元和ULP处理器单元仍处于活动状态。电流消耗约为0.8 mA。
  • 深度睡眠模式:只有RTC单元处于活动状态。在这种情况下,Wi-Fi和蓝牙通信的数据存储在RTC的存储器中。在此模式下,电流消耗在10到150μA之间。
  • 休眠模式:除了用于时钟的RTC定时器和连接到RTC的一些I / O引脚外,所有单元均被禁用。 RTC定时器或连接的引脚可以将芯片从此状态唤醒。在这种情况下,电流消耗约为2.5μA。
    有关更多信息,请查看模块数据表。

在Arduino IDE上开发ESP32

《在Arduino IDE上开发ESP32》

在VSCode中使用PlatformIO开发ESP32

《在VSCode中使用PlatformIO开发ESP32》

ESP32技术专栏

ESP32专栏

猜你喜欢

转载自blog.csdn.net/WangPaiFeiXingYuan/article/details/135469708
今日推荐