简介:
事情就是为了看大一点的屏幕,买了1.3寸的OLED屏幕(4pin),结果发现是SH1106驱动。
试了很多方法,终于点亮了这个oled。
资料下载:
1.首先就是下载普中资料:普中科技-各型号产品资料下载链接_公司新闻_新闻资讯_深圳市普中科技有限公司 (prechin.cn)
2.根据型号,我直接是ESP32-S3,下载基础实验:
3.点开例程安装zip库。
因为提供的库里有关于SH1106的文件,可以直接解压缩zip,查看文件,也可以点击此处为github此库的详细链接:
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);
如何配置如图:
可以自行点开github链接查看.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:
}
到此就可以显示啦!
如果还希望显示别的功能的话,看看文件有什么函数可以使用吧~
或者直接看普中例程、b站教程22.1-OLED液晶显示实验-介绍_哔哩哔哩_bilibili。
后面也大差不差了。
补充:这个库里面没有直接显示中文的字体,需要用到取模软件,也在普中资料里
普中-ESP32S3开发板资料_免费高速下载|百度网盘-分享无限制 (baidu.com)
怎么使用的话可以看22.4-OLED液晶显示实验-函数介绍3_哔哩哔哩_bilibili
我尝试了很多方法,什么Adafruit SH110X啦,什么U8g2啦,或者是问淘宝客服找各种例程啦,但是都出现了很多问题,最后巧合发现了直接用这个库就可以显示了。也有可能是我笨笨的,也花了很长时间,如果可以帮到你,那我真的很开心。
标签:普中,0x3c,S3,ESP32,SH1106,OLED,drawString,Serial,display From: https://blog.csdn.net/2301_81377064/article/details/140856288