网站建设推广小王熊掌号,网页传奇哪个最好玩,舞蹈培训机构网站模板,seo优化工程师本文开发环境#xff1a; MCU型号#xff1a;ESP8266IDE环境 #xff1a; Arduino IDE 1.8.90.96寸 OELD模块 本文内容#xff1a; esp8266 使用 u8g2图形库 驱动 OELD 显示字符和图标自定义软件IIC的接口 文章目录 一、简介二、u8g2 图形库1. u8g2 图形库的安装2. 运行一… 本文开发环境 MCU型号ESP8266IDE环境 Arduino IDE 1.8.90.96寸 OELD模块 本文内容 esp8266 使用 u8g2图形库 驱动 OELD 显示字符和图标自定义软件IIC的接口 文章目录 一、简介二、u8g2 图形库1. u8g2 图形库的安装2. 运行一个示例2.1 接线2.2 打开一个示例 3. 修改接线引脚 一、简介
使用ESP8266模块LoLin驱动0.96寸OLED
二、u8g2 图形库
u8g2 是一个强大的图形库支持多种控制器当然包括本文所用 oled模块的驱动IC SSD1306图形库通过提供API函数的方法使用户可以非常方便的显示各种各样图标字符甚至动效等。详见 u8g2 wiki。在 wiki 中我们可以看到该库提供的控制器
1. u8g2 图形库的安装
在使用功 u8g2 库之前需要在Arduino IDE以下简称IDE中安装 u8g2 图形库该库和其他库的安装相同
在 IDE 中按住Ctrl Shift I 打开库管理器 在库管理中搜索 u8g2 并点击右下角 “安装” 本文已经安装最新版本固右下角不显示安装按钮测试库的安装 在 IDE 编辑窗口中输入以下简单的测试程序并编译通过即表示安装已经成功
#include Arduino.h
#include U8g2lib.h //引用 u8g2 图形库void setup(void)
{
}void loop(void)
{
}2. 运行一个示例
本小结首先通过一个简单的示例让OLED显示一个“HELLO WORLD”字符串
2.1 接线
MCUOLEDD1SCLD2SDA 2.2 打开一个示例
当我们安装好u8g2库以后在【文件】-【示例】-【第三方库】中就可以找到 u8g2 官方给我们提供的各种 demo 我们在 full_buffer 目录中选择一个简单的程序HelloWorld 如果我们直接编译的话将会报错原因是我们没有u8g2这个对象之所以示例程序没有给我们创建是因为它无法预知我们使用的是什么oled驱动器接线方式如何所以需要用户自己实例化一个u8g2对象方法只需要在上文注释掉的内容中找到合适的代码取消注释即可本文使用的oled控制器为SSD1306IIC驱动并使用默认的IIC口无Reset引脚故选择取消以下这一行的注释 如上图所示打开注释以后既可编译编译完成即可下载由于官方的示例是只读的所以需要另存为一份或者是整体复制出来
在运行一个示例以后其他示例的方法是一致的本文简介运行的示例为Weather 重要提示 注意这里是 page_buffer 中的 Weather 而不是 full_buffer 中的Weather 在 1.8.13 测试中full_buffer 的例子是无法正常运行的原因应该是显存方式不同 /* U8g2lib Example Overview: Frame Buffer Examples: clearBuffer/sendBuffer. Fast, but may not work with all Arduino boards because of RAM consumption Page Buffer Examples: firstPage/nextPage. Less RAM usage, should work with all Arduino boards. U8x8 Text Only Example: No RAM usage, direct communication with display controller. No graphics, 8x8 Text only. This is a page buffer example. */ 从上文提示可获取到的信息Frame Buffer 的例子可能不合适所有的arduino板子因为他需要更大的内存空间来保证更快的速度。 3. 修改接线引脚
上文我们直接将SCL和SDA和MCU的D1D2连接若我们想要使用其他的IO口来驱动OLED只需要在实例化对象的时候输入对应的SCL和SDA脚即可。 比如我们想要SDA接开发板上的D5SCL接开发板上的D6这个时候我们可以通过原理图查看D5D6对应的GPIO口编号 这样SDA接D5对应接的是GPIO14SCL接的是D6对应接的是GPIO12我们就可以编写如下程序
#include Arduino.h
#include U8g2lib.h#ifdef U8X8_HAVE_HW_SPI
#include SPI.h
#endif
#ifdef U8X8_HAVE_HW_I2C
#include Wire.h
#endifU8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock*/ 12, /* data*/ 14, /* reset*/ U8X8_PIN_NONE); // All Boards without Reset of the Displayvoid setup(void) {u8g2.begin();
}void loop(void) {u8g2.clearBuffer(); // clear the internal memoryu8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable fontu8g2.drawStr(0,10,Hello SSD1306!); // write something to the internal memoryu8g2.sendBuffer(); // transfer internal memory to the displaydelay(1000);
}
运行如下