昨天写ESP8266,驱动I2C的SSD1306的OLED屏幕。0.91寸,分辨率128*32可是无论如何只能写第一行,而且只能插入点是0,8才能完整的显示第一行。
问题在哪儿呢,认真排查库函数代码,仔细端详对比NodeMCU的Lua初始化代码,发现了端倪。原来使用错了初始化函数。
支持的型号太多了,SSD1306就有一大堆。
常见的这款用下面这句初始化才会正确显示。
// 使用 U8g2 库初始化 OLED
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R2, /* reset=*/ -1, /* clock=*/ 12, /* data=*/ 14); // pin remapping with ESP8266 HW I2C
注意默认的第一个参数是U8G2_R0,表示默认显示方向。
我修改成R2表示旋转180度,如果为R1,则是旋转90度,如果为R3旋转270度。。。
因为是I2C接口一共VCC、GND、SCL、SDA四根线,所以复位用缺省值-1,后面两个参数是使用的引脚编号。
这样就可以轻松使用U8G2了。
|