简介:
我的核心板是淘宝随机一家店买的ESP32-S3-DevKitC-1,最近要用到OLED,为了看大一点的屏幕,买了1.3寸的屏幕(4pin),结果发现是SH1106驱动。平时常见的都是SSD1315驱动,这会真的懵了,试了很多方法,终于点亮了这个oled。
资料下载:
1.首先就是下载资料:普中官网->新闻资料。没别的意思,资料真的挺全的TvT。
2.根据型号,我直接是ESP32-S3,下载基础实验:
3.点开例程安装zip库。
以下是添加ZIP库的方法:
因为提供的库里有关于SH1106的文件,可以直接解压缩zip,查看SH1106.h/SH1106.cpp文件,也可以点击此处为github此库的详细链接,具体怎么 看我就不讲解了,不懂得可以百度搜索用法,或者随机找一个AI:
esp8266-oled-ssd1306/src/SH1106Wire.h at master · ThingPulse/esp8266-oled-ssd1306 · GitHub
根据库的一些提示,修改代码。最后就可以显示了。
代码:
1.首先是引入库
#include <Arduino.h>
#include <SH1106Wire.h>
2.定义引脚。
#define SDA 47
#define SCL 21
3.创建实例
地址一开始用的0x78.无果。换0x3c,误打误撞成功了。问过客服説是,如果是7位就0x3c,如果是8位那就0x78。
SH1106Wire display(0x3c,SDA,SCL,GEOMETRY_128_64,I2C_ONE,400000);
display( )如何配置如图:
详细查看.h文件。
4.setup()
void setup() {
Serial.begin(115200);
if(!display.init()) {
Serial.println("OLED init failed");
while (1) delay(100); // 如果初始化失败,则停止执行
}
display.flipScreenVertically();
display.clear();
display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, "Hello World");
display.display();
}
如果发现没有反应,可以使用串口检测去调试,很好用。
全部代码:
#include <Arduino.h>
#include <SH1106Wire.h>
#define SDA 47
#define SCL 21
SH1106Wire display(0x3c,SDA,SCL,GEOMETRY_128_64,I2C_ONE,400000);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
if(!display.init()) {
Serial.println("OLED init failed");
while (1) delay(100); // 如果初始化失败,则停止执行
}
Serial.println("2");
display.flipScreenVertically();
display.clear();
display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, "Hello World");
display.drawString(0, 10, "oled");
display.drawString(0, 20, "电磁阀");
display.display();
Serial.println("3");
}
void loop() {
// put your main code here, to run repeatedly:
}
到此就可以显示啦!
如果还希望显示别的功能的话,可以再loop()里面添加,看看文件有什么函数可以使用吧~
或者直接看b站教程,里面对一些函数用法讲解挺详细的:22.1-OLED液晶显示实验-介绍_哔哩哔哩_bilibili。
补充:这个库里面没有直接显示中文的字体,需要用到取模软件,也在下载的资料里
怎么使用的话可以看22.4-OLED液晶显示实验-函数介绍3_哔哩哔哩_bilibili,这里是我在视频中截取的图像。
我尝试了很多方法,什么Adafruit SH110X啦,什么U8g2啦,或者是问淘宝客服找各种例程啦,但是都出现了很多问题,最后巧合发现了直接用这个库就可以显示了。也有可能是我笨笨的,也花了很长时间,如果可以帮到你,那我真的很开心。