利用Arduino IDE实现OLED显示器与ESP32的接口
扫描二维码
随时随地手机看文章
16x2液晶显示模块是目前最常用的显示模块,我们已经与ESP32接口构建了一个互联网时钟。但这些类型的显示器是空间和功耗模块,不能用于可穿戴产品。这是另一种流行的显示模块,称为OLED,虽然它比16x2显示器稍微贵一点,但它是一个小而不耗电的模块。OLED是一种图形显示模块,可用于显示小图像和图形。
在这个项目中,我们将使用流行的带有OLED的Wi-Fi模块ESP32在其上显示一些图形图像。通过构建在ESP32上的各种应用程序来了解更多关于ESP32及其工作的信息。
OLED显示器
OLED(有机发光二极管)是一种使用有机化合物制成的发光二极管,当电流允许流过时,有机化合物就会激发。这些有机化合物有自己的光,因此它们不像普通的lcd那样需要任何背光电路。由于这个原因,OLED显示技术是节能的,广泛应用于电视和其他显示产品。
根据显示器的颜色、引脚数量、尺寸和控制器IC,市场上有各种类型的oled。
下图显示了小型OLED模块的可用选项
在本教程中,我们将使用单色蓝4针SSD1306 0.96英寸OLED模块,该模块宽128像素,长64像素。这款4针OLED仅支持I2C协议,控制器IC SSD1306有助于OLED显示接收到的字符。
组件要求:
•ESP32模块
•128*64 SSD1306 OLED模块
•跳线
ESP32 OLED显示电路图
ESP32 OLED连接:
1. ESP32的SCL引脚(D22) - OLED的> SCL引脚
2. ESP32的SDA引脚(D21) - OLED的> SDA引脚
3. ESP32的3.3v引脚- OLED的> Vcc(支持3-5v)
4. ESP32的GND -> OLED的GND
在Arduino IDE中安装OLED所需的库
为了使用ESP32在OLED上显示内容,我们需要两个库Adafruit_SSD1306库和Adafruit_GFX库。
按照以下步骤安装这些库:
1. 打开Arduino IDE并转到Sketch > Include Library > Manage Libraries。
2. 在库管理器中,搜索上述库并安装它们。
安装完库后,重新启动Arduino IDE。
面向OLED的ESP32编程
在为ESP32编写代码之前,请确保您已经下载了它的板文件。如果没有,打开Tools -> Board -> Board管理器,搜索ESP32并安装。在这里了解更多关于用Arduino IDE编程ESP32的信息。
获取OLED模块的I2C地址:
这里OLED和ESP32之间使用I2C通信,所以我们需要显示器的I2C地址。128*64 OLED的I2C地址一般为0x3C。要找到OLED模块的I2C地址,将OLED模块与ESP32连接,上传以下代码并打开串行监视器。你会看到OLED的地址。此地址将在最终代码中使用。
利用ESP32在OLED上显示图像
现在,编写代码来依次显示滚动文本和位图图像。完整的代码在本教程的末尾给出。您可以在文件->示例->AdafruitSSD1306中找到OLED的示例代码。
1. 现在,通过导入必要的库来启动代码。包括“adafruit_gx .h”,“Adafruit_SSD1306.h”用于OLED显示器和用于I2C的wire.h。
2. 使用# Define宏定义屏幕宽度和高度。然后创建一个使用库的实例。
3. 我们将创建一个函数来显示滚动文本。首先使用display. cleardisplay()函数清除显示。您可以使用display.setTextSize()函数并通过将大小作为参数来设置文本大小。要打印文本,可以使用display.println()或display.print()函数,如下所示。
现在,在不同方向上滚动文本,有不同的功能。向右滚动使用display.startscrollright(),类似地向左滚动使用display.startscrollleft(),向右滚动使用display.startscrolldiagright(),如下所示。
4. 在setup函数中,使用SSD1306_SWITCHCAPVCC初始化OLED显示屏,它会内部产生3.3V来初始化显示屏。然后调用display_scrolltext()和display. drawbitmap()函数来显示文本和图像。
这里display. drawbitmap()函数接受6个参数(x坐标,y坐标,位图数组,宽度,高度和颜色)来显示图像。由于我们使用的是128x64 OLED,所以我们将宽度和高度分别设置为128和64。这里,位图数组包含在屏幕上绘制像素以创建图像的像素信息。这个位图数组(十六进制值)可以在线或使用位图软件生成,如下所述。
将图像转换为位图数组
要将图像转换为十六进制值,您可以使用此在线工具。
1. 转到这个在线工具并上传你想要转换的图像。输入OLED的尺寸,即128*64,并根据需要更改背景颜色。它还将显示图像的预览,如下所示。
2. 然后单击Generate code。
3. 这里我们正在转换一幅《钢铁侠》的图像。因此,在转换图像之后,复制所有生成的十六进制值并将其粘贴到Arduino代码中,如下所示。完整的Arduino代码与完整的十六进制值在本教程结束时给出。
要查看OLED显示器的可用功能,请参阅Arduino目录下的Adafruit ssd1306库的头文件。
ESP32 OLED图形显示
最后,使用Arduino IDE将完整的代码上传到ESP32,您将首先看到滚动文本说“即将到来的钢铁侠”,然后它将显示钢铁侠图形图像,我们使用在线工具将其转换为十六进制值。
本文编译自iotdesignpro