lua编程入门教程,用NodeMCU在OLED上显示温湿度
|
OLED模块介绍 OLED显示屏是指有机电激发光二极管(Organic Light-Emitting Diode,OLED),具备自发光,所以不需背光源,对比度高,厚度薄,视角广,反应速度快等特性,被认为是下一代的平面显示器新兴应用技术。 笔者使用的是0.96寸,白色,I2C总线的OLED模块显示屏,分辨率128x64,OLED常用接口有I2C和SPI。转接板自己画的,和某宝的上购买的模块接口基本一致。模块有5V转3.3V电路,可以兼容外接3.3V和5V电压。硬件部分这里就不多说了,购买oled模块后客服都会给模块相关资料。
注: 在购买OLED模块时,要查看该模块是否被 u8g2库 所支持,只有被 u8g2库 支持的OELD屏才能使用该库。 启用I2C和OLED模块 在往期文章《 ESP8266之NodeMCU固件编译 》中,其实已经介绍了如何启用NodeMCU所支持的各种模块,启用对应的模块后,需要重新编译固件,烧录到ESP8266才能使用,一般根据自己的需求开启对应的模块,以减少固件的大小。 1)启用I2C模块,需要打开 user_modules.h 文件中的 LUA_USE_MODULES_I2C ,使用笔者之前编译的固件,默认是已经开启了。 ESP8266芯片没有硬件I2C接口,所以模块使用软件接口驱动程序。可包括GPIO16在内的任何GPIO引脚上设置。模块支持主模式,每条总线上可具有不同速度,最多10条总线。 慢速:100kHz; 快速:400kHz; FastPlus:1MHz 2)启用OLED模块,需要打开 user_modules.h 文件中的 LUA_USE_MODULES_U8G2 ,u8g2模块 已经将常见的OLED屏驱动都写好了,源码是开源的,可上GitHub查看。模块如下: #define LUA_USE_MODULES_I2C #define LUA_USE_MODULES_U8G2I2C相关接口 由于使用了u8g2库,这里就只需要了解 i2c.setup() 接口。 i2c.setup(id, pinSDA, pinSCL, speed) 参数: id:0~9,总线编号,NodeMCU支持10个I2C总线。 pinSDA:1~12,SDA的IO口编号 pinSCL:1~12, SCL的IO口编号 speed:i2c.SLOW (100kHz), i2c.FAST (400kHz), i2c.FASTPLUS (1MHz)或者在25000 ~ 1000000Hz之间的任意时钟频率。FASTPLUS模式在默认80MHz的CPU频率下产生600kHz的I2C时钟速度,要得到1MHz的I2C时钟速度,要使用接口 node.setcpufreq(node.CPU160MHZ) 改变CPU频率到160MHz。 返回值: speed:成功则返回设置的speed;失败则返回0。 想了解其他接口,可见NodeMCU官方文档。 U8G2库相关接口SSD1306驱动的初始化 使用I2C接口,调用以下代码初始化: sla = 0x3c -- oled的I2C地址 -- id:I2C初始化时的id disp = u8g2.ssd1306_i2c_128x64_noname(id, sla) 其他驱动类型的OLED初始化,见NodeMCU官方文档。 u8g2.disp:drawStr(x, y, *str) x:x轴坐标 |








