目录
一,介绍
在本教程中,我们使用ESP32 在I2C OLED显示屏进行显示“hello word”,为了与显示屏进行交互,我们在这里使用了I2C的协议。让我们感到高兴的是,ESP32 的arduino核心已经实现了一个与Wire.h先对应的库。此外我们还需要安装一个ssd1306 的库,这个库可以使用更高级的API与显示器进行交互,提供了一些非常易于使用的功能,它可以通过Arduino IDE库管理器安装,如图1所示。
二,硬件
- ESP32开发板
- 一个I2C OLED显示屏
- 导线若干
- 一块面包板
三,电路图
OLED SDA引脚连接22,SCL连接23。
四,代码设计
我们需要做的第一件事是包括Wire.h库,它允许使用I2C协议与设备建立通信。该ESP32板的显示器使用该协议进行通信。
此外,我们需要包含 SSD1306.h库,它提供与显示器交互所需的更高级功能。这样,我们就不必担心较低级别的通信协议细节。
#include "SSD1306.h"
我们还将使用#define宏来指定ESP32 的SCL和SDA引脚的值。从电路板背面可以看出(包含写在PCB中的一些引脚映射信息),SDA引脚对应22,SCL对应23。
#define SDA 22
#define SCL 23
最后,我们需要一个类SSD1306的对象 , 它将公开我们与显示器交互所需的所有方法。当我们包含SSD1306.h库时,此类可用
该类的构造函数接收显示器的I2C地址作为第一个参数,即 0x3c。另外,它分别接收SDA和SCL引脚的数量。请记住,我们之前使用#define指令定义了这些值,我们现在将使用它们。
SSD1306 display(0x3c, SDA, SCL);
继续进行Arduino设置功能,我们将通过调用SSD1306对象的init方法初始化显示。此方法调用不接收任何参数。
display.init();
要将一些内容写入显示,我们只需要在同一个SSD1306对象上调用drawString方法。作为第一个和第二个参数,我们分别传递x和y坐标,其中应该绘制字符串。
作为第三个参数,我们传递字符串来绘制。我们将传递一个非常简单的“Hello World”字符串,如下所示。
display.drawString(0, 0, "Hello World from ESP32!");
最后,我们调用display方法,确保在显示中绘制内容。此方法返回void并且不接收任何参数。
display.display();
以下就是完整的代码:
/*******************************************************
ESP32 使用OLED显示字符
功能:使用OLED显示"hell0 world from ESP32"
引脚: SDA-> GPIO22 SCL-> GPIO23
Designer: Code_Mouse
Date:2018-9-16
*******************************************************/
#include "Wire.h"
#include "SSD1306.h"
#define SDA 22
#define SCL 23
SSD1306 display(0x3c, SDA, SCL);
void setup() {
display.init();
display.drawString(0, 0, "Hello World from ESP32!");
display.display();
}
void loop() {}
五.测试代码
要测试代码,只需编译它并将其上传到ESP32板。程序完成后,代码中定义的“Hello World from ESP32 ”字符串应打印在显示屏中,如图2所示。
第一次用,出现错误。
是不是要下载库啊?
你后面成功了没,我这边怎么也驱动不了,但是屏幕是树莓派上使用没问题
要下载SSD1306.h的库,这个库去库管理里找一下
是esp32模块有问题,换了一块新的就好了
牛
不错