- 物联网ESP32教程
- 首页
- 物联网简述
- ESP32介绍
- 在Arduino IDE中安装ESP32开发板
- 设置RTOS进行双核和多线程操作
- ESP32与MPU6050接口连接
- ESP32与模拟传感器接口连接
- ESP32参数设置
- ESP32 SPIFFS存储(芯片内置迷你SD卡)
- ESP32与OLED显示屏接口连接
- ESP32上的WiFi
- 使用HTTP通过WiFi传输数据
- 使用HTTPS通过WiFi传输数据
- 使用MQTT通过WiFi传输数据
- 通过蓝牙传输数据
- 使用NTP客户端获取当前时间
- 执行ESP32固件的(OTA)更新
- ESP32的应用
- 开发人员的后续步骤
- 物联网ESP32实用资源
- 快速指南
- 实用资源
- 讨论
ESP32与OLED显示屏接口连接
OLED与ESP32的组合非常流行,有些ESP32开发板集成了OLED。但是,我们将假设您将使用独立的OLED模块和您的ESP32开发板。如果您有一个OLED模块,它可能看起来像下面的图片。
将OLED显示模块连接到ESP32
与我们在前一章中讨论的MPU6050模块一样,OLED模块通常也使用I2C进行通信。因此,连接方式将与MPU6050模块类似。您需要将SDA线连接到ESP32的21引脚,SCL线连接到22引脚,GND连接到GND,VCC连接到3V3引脚。
OLED显示屏库
有许多库可用于将OLED显示屏与ESP32连接。您可以随意使用任何您觉得舒适的库。在本例中,我们将使用ThingPulse和Fabrice Weinberg编写的“ESP8266和ESP32 OLED驱动程序,用于SSD1306显示屏”。您可以从工具->管理库中安装此库。它也可以在GitHub上找到。
代码演练
由于我们刚刚安装的库,代码变得非常简单。我们将运行一个计数器代码,它只会计算自上次复位以来的秒数并将它们打印在OLED模块上。代码可以在GitHub上找到。
我们首先包含SSD1306库。
#include "SSD1306Wire.h"
接下来,我们定义OLED引脚及其I2C地址。请注意,有些OLED模块包含额外的复位引脚。一个很好的例子是ESP32 TTGO开发板,它带有内置的OLED显示屏。对于该开发板,16引脚是复位引脚。如果您将外部OLED模块连接到ESP32,则很可能不会使用复位引脚。0x3c的I2C地址通常对所有OLED模块都是通用的。
//OLED related variables #define OLED_ADDR 0x3c #define OLED_SDA 21//4 //TTGO board without SD Card has OLED SDA connected to pin 4 of ESP32 #define OLED_SCL 22//15 //TTGO board without SD Card has OLED SCL connected to pin 15 of ESP32 #define OLED_RST 16 //Optional, TTGO board contains OLED_RST connected to pin 16 of ESP32
接下来,我们创建OLED显示对象和计数器变量。
SSD1306Wire display(OLED_ADDR, OLED_SDA, OLED_SCL); int counter = 0;
之后,我们定义两个函数。一个用于初始化OLED显示屏(如果您的OLED模块不包含复位引脚,则此函数是冗余的),另一个用于在OLED显示屏上打印文本消息。showOLEDMessage()函数将OLED显示区域分解为3行,并要求3个字符串,每行一个。
void initOLED() { pinMode(OLED_RST, OUTPUT); //Give a low to high pulse to the OLED display to reset it //This is optional and not required for OLED modules not containing a reset pin digitalWrite(OLED_RST, LOW); delay(20); digitalWrite(OLED_RST, HIGH); } void showOLEDMessage(String line1, String line2, String line3) { display.init(); // clears screen display.setFont(ArialMT_Plain_16); display.drawString(0, 0, line1); // adds to buffer display.drawString(0, 20, line2); display.drawString(0, 40, line3); display.display(); // displays content in buffer }
最后,在setup中,我们只需初始化OLED显示屏,在loop中,我们只需利用显示屏的前两行显示计数器。
void setup() { // put your setup code here, to run once: initOLED(); } void loop() { // put your main code here, to run repeatedly showOLEDMessage("Num seconds is: ", String(counter), ""); delay(1000); counter = counter+1; }
就是这样。恭喜您在OLED显示屏上显示了您的第一个文本语句。