博客
关于我
基于Arduino的ESP32-S3 + 1.3寸OLED(4pin)
阅读量:789 次
发布时间:2023-01-23

本文共 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扫描程序验证连接,后续可扩展实现更多功能。

转载地址:http://sceyk.baihongyu.com/

你可能感兴趣的文章
Python3运行的时候错误:ModuleNotFoundError: No module named 'PIL'
查看>>
PHP是世界上最好的语言?Phython第一个不服
查看>>
Bugku CTF-web6
查看>>
Bugku CTF-web10 头等舱
查看>>
UML-配置图
查看>>
JS高级面向对象(二)-构造函数和原型
查看>>
python入门到秃顶(10):异常
查看>>
ES6_变量生明
查看>>
考研复试英语问答
查看>>
百度背景换肤案例
查看>>
修改ng-zorro中table对齐及宽度等细节
查看>>
输出对象的值——踩坑
查看>>
angular2项目里使用排他思想
查看>>
failed to push some refs to git
查看>>
在苹果Mac上如何更改AirDrop名称?
查看>>
1110 Complete Binary Tree (25 point(s))
查看>>
541【毕设课设】基于单片机电阻电感电容RLC测量仪系统
查看>>
基于8086交通灯系统仿真设计(微机原理设计资料)
查看>>
解读域名管理之:域名注册机构介绍
查看>>
找中位数
查看>>