本帖最后由 dfrobot 于 2019-5-30 21:51 编辑
简介 该esp32教程旨在解释如何使用Arduino核心将ESP32开发板连接到SSD1306 OLED显示器,并打印“Hello World”消息。本教程使用Elecrow的OLED版本。使用的ESP32板型号为NodeMCU。 为了便于与显示器进行交互,我们需要安装一个支持上述显示模型的库,并且能够在ESP32开发板上使用。您可以在如下图1中对库进行查看,并通过Arduino IDE库管理器进行安装。 您可以在此处查看库的GitHub页面,该页面详细说明了能够与显示器交互的API。
图1 - 安装OLED库。
本教程使用了Elecrow的OLED版本。它也可以作为这个启动工具包的一部分,使用的ESP32板是NodeMCU。
电气图 ESP32将通过I2C与SSD1306显示器进行交互。因此,除了电源之外,我们在设备之间只需要两根线。 电气图如下图2所示。我们分别使用ESP32引脚21和22作为I2C SDA和SCL。 由于SSD1306的工作电压为3.3 V,我们可以使用大多数ESP32电路板拥有的3.3 V电源引脚,对显示器进行供电。 请注意,根据您的开发板型号,引脚标注名称或编号可能与ESP32微控制器名称或编号不匹配。在继续实际接线前,您应该查看电路板的引脚映射关系并进行确认。 图2 - ESP32和SSD1306 OLED显示屏之间的电气图。 代码 本教程代码非常简单,因为我们刚刚安装的库具有非常易于使用的API。 首先,我们需要囊括Wire.h库,这是与OLED显示器进行I2C通信所需的内容。我们还需要加入SSD1306.h库,我们将使用它来与设备进行交互。
[mw_shl_code=applescript,true]#include <wire.h>
#include "SSD1306.h"[/mw_shl_code]
接下来,我们需要声明SSD1306类对象,它将提供在显示中绘制所需的功能。我们将调用此对象显示。 所述类构造函数接收器件的I2C地址作为第一个参数,即0x3c。对于第二个和第三个参数,构造函数分别接收SDA和SCL引脚的数量。在我们的示例中,我们使用ESP32的引脚21和22,如示意图所示。
[mw_shl_code=applescript,true]SSD1306 display(0x3c, 21, 22);
[/mw_shl_code]
现在,在setup函数中,我们将通过调用display对象的init方法对显示进行初始化。此方法不接收任何参数并返回void。
[mw_shl_code=applescript,true]display.init();[/mw_shl_code] 接下来我们可以开始在显示屏上绘图。对于这个简单示例,我们将绘制一个非常简单的“Hello World”消息。为此,我们可以调用display对象的drawString方法。 此方法接收x和y坐标作为第一个和第二个参数,其中字符串将在显示器上绘制,并且作为第三个参数,它接收具有实际内容的字符串。
[mw_shl_code=applescript,true]display.drawString(0, 0, "Hello World");[/mw_shl_code] 最后,为了将内容发送到显示器以便进行有效绘制,我们需要在对象中调用display方法。此方法不接收任何参数。
[mw_shl_code=applescript,true]display.display();[/mw_shl_code]
由于我们不打算更改显示内容,因此我们可能会保留一个空的Arduino循环函数。一旦连接成功,我们刚才绘制的字符串就会保留在显示屏上。最终的源代码如下所示。
[mw_shl_code=applescript,true]#include <Wire.h>
#include "SSD1306.h"
SSD1306 display(0x3c, 21, 22);
void setup() {
display.init();
display.drawString(0, 0, "Hello World");
display.display();
}
void loop() {}[/mw_shl_code]
代码测试 如需测试代码,在完成图1图表所指定的接线后,只需编译它并使用Arduino IDE将其上传到ESP32开发板即可。 执行程序后,显示屏上将出现“Hello World”消息,如图3所示。
注:本文作者是Nuno Santos,他是一位和蔼可亲的电子和计算机工程师,住在葡萄牙里斯本 (Lisbon)。 他写了200多篇有关ESP32、ESP8266的有用的教程和项目。
查看更多ESP32/ESP8266教程和项目:
|