u8g2是一款单色图形库,非常适合12864之类的显示屏,基本上支持了市面上的主流显示控制器。可是偏偏对SH1106不是那么友好,使用起来不是很方便。打开IDE的示例程序可以看到对SH1106列出来的几乎都SPI通信方式,仅仅只有一条是使用了硬件I2C的,但对于使用想使用模拟方式的就不是很方便了。
今天就分享一下怎么在ESP8266上使用u8g2驱动SH1106的OLED,本文中使用的是模拟I2C的方式,Arduino IDE编写。
一.首先在IDE库中安装u8g2库
直接在IDE的库管理器搜索“u8g2”关键字下载安装即可:
二 .打开示例程序修改代码
我打开的是u8g2logo的示例程序。然后再敲下这句代码或者复制示例中硬件I2C的修改:
U8G2_SH1106_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /*SCL*/ 14, /*SDA*/ 2, /*reset*/ U8X8_PIN_NONE);
*注 :函数内的第一个和最后一个参数不用修改,SCL和SDA则修改为自己板子上要对应的引脚。实测8266上的GPIO16不可用作I2C引脚。
三 .注释steup函数中引脚配置的代码
四.连接好你的设备,编译上传
编译无误,上传成功。
五 .大功告成
接下来你就可以使用u8g2去玩SH1106了。
*注:本文对于SSD1306控制器也是适用的,但SH1106是不兼容SSD1306代码的,会出现白边或者字体有间隔。