基于Arduino的ESP32-S3 + 1.3寸OLED(4pin)
发布日期:2025-03-28 00:42:30 浏览次数:7 分类:精选文章

本文共 2427 字,大约阅读时间需要 8 分钟。

前言

随着物联网技术的快速发展,OLED显示屏凭借其高对比度、低功耗等优势,在嵌入式开发中应用广泛。本文以ESP32-S3-DevKitC-1开发板为例,详细叙述了从硬件连接到代码实现的完整驱动方案。与传统的0.96寸SH1106方案相比,本文采用1.3寸SH1306,在保持相同分辨率(128x64)的同时,显著增加了可视面积,适合显示更多信息。

硬件准备

硬件对比

硬件连接示意

接线示意:

GND - GND
VCC - 3.3V / 5V
SCL - GPIO21
SDA - GPIO47

驱动实现

开发环境配置

#include 
#include
#include
#define SDA 47#define SCL 21

代码示例:

SH1106Wire display(0x3C, SDA, SCL);

引脚定义

代码示例:

#define SDA 47#define SCL 21

I2C地址扫描

注意事项:

#define SDA_PIN 47#define SCL_PIN 21void setup() {    Serial.begin(9600);    Wire.begin(SDA PIN, SCL PIN);}void loop() {    scanI2CDevices();    delay(5000);}void scanI2CDevices() {    byte error = 0;    int foundDevices = 0;    for (byte address = 1; address <= 0x7F; address++) {        if (!Wire.beginTransmission(address)) {            error = Wire.endTransmission();            if (error != 0) break;        }        error = Wire.endTransmission();        if (error == 0) {            Serial.printf("发现设备:0x%02X\n", address);            foundDevices++;        }    }    Serial.printf("共发现%d个设备\n", foundDevices);}

完整驱动代码

代码示例:

#include 
#include
#define SDA 47#define SCL 21SH1106Wire display(0x3C, SDA, SCL);void oledbegin() { if (!display.init()) { Serial.println("OLED初始化失败"); while(1) delay(100); } display.flipScreenVertically(); display.clear(); display.setFont(&ArialMT_Plain_10);}void displaysensor() { display.drawString(0, 0, "Hello World"); display.drawString(0, 10, "oled"); display.drawString(0, 20, "电磁阀"); display.display();}void displayTemp() { float temp = 0.0; display.drawString(0, 20, String(temp) + "℃"); display.display();}void setup() { Serial.begin(9600); oledbegin();}void loop() { displaysensor(); displayTemp();}

关键函数解析

display.init(); // 初始化屏幕并检测通信状态display.flipScreenVertically(); // 实现180度屏幕旋转display.setFont(&ArialMT_Plain_10); // 支持ArialMT_Plain_10/16/24字体

参考来源

B站 - 普中科技

CSDN博主 - thief_1

总结

本文实现了ESP32-S3对1.3寸OLED屏的完整驱动方案,相比传统方案,可视面积增加30%。在硬件连接和代码实现过程中,需注意GPIO冲突问题。建议通过I2C扫描程序验证连接,后续可扩展实现更多功能。

上一篇:基于Arduino的ESP32-S3连接OneNET云平台实战指南(二)——Token生成
下一篇:基于Arduino的ESP32-S3 +光敏传感器(4pin)

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月19日 16时41分36秒