做兼职什么网站好,品牌策划 网站源码,网站开发的报告书,做购物比价的网站Content 0. 前言1. 安装platformIO环境2. 新建工程3. 添加外部库4. 修改U8g2_for_Adafruit_GFX库5. 代码和烧录 0. 前言
墨水屏是黄鱼淘的#xff0c;效果还不错。
U8G2库一直编译不进去#xff0c;显示汉字始终不太美观#xff0c;个人一直不太喜欢汉字取模的方法#x… Content 0. 前言1. 安装platformIO环境2. 新建工程3. 添加外部库4. 修改U8g2_for_Adafruit_GFX库5. 代码和烧录 0. 前言
墨水屏是黄鱼淘的效果还不错。
U8G2库一直编译不进去显示汉字始终不太美观个人一直不太喜欢汉字取模的方法过于累赘且不美观所以探索了以下优化办法。
开发环境vscode PlatformIO 框架 操作系统Windows10 专业版 开发板ESP8266
1. 安装platformIO环境
参考以下博客安装platformIO插件 platformIO环境安装
如果新建工程速度慢或下载速度慢使用以下方法来加速 解决PlatformIO下载速度慢
2. 新建工程
点击新建工程 工程名可以随便起但是芯片和框架一定要选对
ESP-12E和ESP-12F都是选相同的ESP-12E都是同样的4M内存但布线方式不同ESP-12F在ESP-12E的基础上重新布线目的是为了增强信号。
如果这一步一直转圈圈这是下载编译工具链慢导致尝试参考以下文章解决 解决PlatformIO下载速度慢 新建完工程的目录结构如下图所示 其中
.vscode文件夹存放vscode配置文件不必过多理会。.pio通过platformIO下载的库会放入此文件夹中 /芯片 目录中我的芯片选择是 esp12e所以我添加的库会存放至 ./pio/esp12e 中有些如 lvgl 的库是需要做编译设置的需要时在这边查看。src存放main.cpp这是我们主要编写代码的地方。include技术拙劣目前没用到还不清楚lib存放我们自己编写的库需要放进去并且在用到的地方声明。platformio.ini这是一个很重要的配置文件我们添加库和修改编译项目需要在这个地方修改。
3. 添加外部库
现在工程已经新建完成接下来添加库。
懒人方法
注释原来的全部内容加上我的内容
[env:esp12e]
platform espressif8266
board esp12e
framework arduino
lib_deps olikraus/U8g2_for_Adafruit_GFX^1.8.0zinggjm/GxEPD2^1.5.4按下Ctrl S 即可开始下载第三方库其中下载的库为 GxEPD 和 U8g2_for_Adafruit_GFX 。
正常方法
正常来说应该要学会自己如何添加自己需要的库 点进GxEPD注意 不要点错为 GxEPD2二者有差别。 GxEPD2 貌似并不支持ssd1608所以理论上不能直接选需要在配置文件中找能替换的IC目前找不到先不考虑。
接下来添加进工程 选择工程
等待即可。
U8g2_for_Adafruit_GFX库也是这样操作将其添加进去。
4. 修改U8g2_for_Adafruit_GFX库
如果不修改库内容后续会引发错误导致内存过大无法编译通过。
所以这里使用 甘草酸不酸 修改过的库感谢开源者做出的贡献: 甘草酸不酸-U8G2-gitee
将这个文件下载下来并且解压
复制解压出来的库 进入 .pio\libdeps\esp12e 粘贴 然后库的修改就做好了。
如果你动手能力很强不怕出错你可以尝试不用别人修改的库 在.pio\libdeps\esp12e\U8g2_for_Adafruit_GFX\src\u8g2_fonts.h添加
#if defined(ESP8266)
#define U8X8_FONT_SECTION(name) attribute((section(.text. name)))
#endif在\.pio\libdeps\esp12e\U8g2_for_Adafruit_GFX\src\U8g2_for_Adafruit_GFX.cpp添加
#if defined(ESP8266)
uint8_t u8x8_pgm_read_esp(const uint8_t * addr)
{uint32_t bytes;bytes (uint32_t)((uint32_t)addr ~3);return ((uint8_t*)bytes)[(uint32_t)addr 3];
}
#endif5. 代码和烧录
现在开始在main.cpp中编程在第二、第三行中修改你的墨水屏文件
#include GxEPD.h
#include GxGDEW029T5/BitmapExamples.h // 2.9 b/w IL0373
#include GxGDEW029T5/GxGDEW029T5.h // 2.9 b/w IL0373// FreeFonts from Adafruit_GFX
#include Fonts/FreeMonoBold9pt7b.h
#include Fonts/FreeMonoBold12pt7b.h
#include Fonts/FreeMonoBold18pt7b.h
#include Fonts/FreeMonoBold24pt7b.h#include GxIO/GxIO_SPI/GxIO_SPI.h
#include GxIO/GxIO.h#include U8g2_for_Adafruit_GFX.h#if defined(ESP8266)
GxIO_Class io(SPI, /*CSD8*/ SS, /*DCD2*/ 4, /*RSTD4*/ 2);
GxEPD_Class display(io, /*RSTD4*/ 2, /*BUSYD1*/ 5); #endifU8G2_FOR_ADAFRUIT_GFX u8g2Fonts; //初始化 U8G2 对象void fun();void setup()
{display.init(115200); // enable diagnostic output on Serialdisplay.setRotation(3);u8g2Fonts.begin(display); // 将u8g2过程连接到Adafruit GFX//u8g2Fonts.setFontMode(1); // 使用u8g2透明模式这是默认设置u8g2Fonts.setFontDirection(0); u8g2Fonts.setForegroundColor(GxEPD_BLACK); // 设置前景色u8g2Fonts.setBackgroundColor(GxEPD_WHITE); // 设置背景色//u8g2Fonts.setFont(chinese_gb2312);display.setTextColor(GxEPD_BLACK);u8g2Fonts.setFont(u8g2_font_wqy16_t_gb2312a); // select u8g2 font from here: https://github.com/olikraus/u8g2/wiki/fntlistall
}void loop()
{display.drawPaged(fun);delay(5000);
}void fun()
{const char* name FreeMonoBold9pt7b;const GFXfont* f FreeMonoBold9pt7b;display.fillScreen(GxEPD_WHITE);display.setTextColor(GxEPD_BLACK);display.setFont(f);//设置字体display.setCursor(0, 0);//设置游标u8g2Fonts.setCursor(0, 128/2);u8g2Fonts.println(人不能同时拥有青春和对青春的感受.);
}编译并烧录后是这样的结果
黄色是警告暂时忽略
这是资源使用情况非常的清晰直观还剩下很多可以供我们操作
烧录进去后是这个效果
测试后一行可以显示 18个汉字1个标点符号共八行标点建议使用英文标点如中文逗号无法显示但中文句号可以显示并且还不错。
人不能同时拥有青春和对青春的感受且行且珍惜