数码之家

 找回密码
 立即注册
搜索
查看: 3284|回复: 9

[Arduino] Esp8266 墨水屏显示汉字方法

[复制链接]
发表于 2022-9-8 16:11:34 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
老样子啊,先来半杯小鸟伏特加,啊不对,先上图 1.jpg

    自从知道了水墨屏,就对这个显示喜欢的不得了,奈何新品价格太贵,只能去咸鱼淘,结果淘回来的屏老化严重,显示效果不好。不过凑合能用。
回到正题,esp8266有GxEPD和GxEPD2 两个库,本身显示英文是有字库的,引用一下显示也很方便,奈何中文显示不好。
  显示中文只能是用软件把汉字转成点阵字库用。对于显示更多的信息就比较麻烦,这也是上面这个屏幕没有显示节日名称的原因。
于是在网上搜了很多地方,也看了很多例程,里面是有显示中文的办法,就是使用u8g2库,可惜的是,虽然字库中只有wqy_chinese1,2,3
这几个库可以正常显示中文,但是里面中文字很少,只有100多个汉字,根本就用不了。
下面这个就是chinese1
image.png

于是我试着使用wqy_gb2312库,但是死活编译不过去。提示的是ib存储空间不足,不应该啊,esp8266 我这个有4Mflash存储。
我在网上又搜索了一番,看到大神甘草酸不酸的源码里面提到他的可以显示所有汉字,但是他是带了一个字库gb2312.c文件,
而且他提到必须用他提供的U8g2_for_Adafruit_GFX库,而且有人在下面评论一些内容,虽然我不是很懂,但是不影响我用他。
我把它的库和字库导入源码,然后果然可以正常显示汉字了,既然这样,那是不是可以换别的字库了呢,我于是又换上wqy字库
果然也可以了,就在这里留给大家,看有需要的人拿去用吧。

修改ugg2_for_Adafruit_GFX  的地方
感谢 甘草和felixlet 大神

//=========================
在 Arduino\libraries\U8g2_for_Adafruit_GFX\src\u8g2_fonts.h
添加
#if defined(ESP8266)
#define U8X8_FONT_SECTION(name) attribute((section(".text." name)))
#endif
在 Arduino\libraries\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];
}
#endif


//==============================
下面是示例代码,
需要注意添加对应的库,用标准示例改一下,GxEPD2,U8g2_for_Adafruit_GFX.h (需要改动上面的部分):
#include <GxEPD2_BW.h> // including both doesn't use more code or ram

#include <U8g2_for_Adafruit_GFX.h>

// select the display class and display driver class in the following file (new style):
#include "GxEPD2_display_selection_new_style.h"

// alternately you can copy the constructor from GxEPD2_display_selection.h or GxEPD2_display_selection_added.h of GxEPD2_Example to here
// e.g. for Wemos D1 mini:
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0154D67
GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDE0213B1, phased out
U8G2_FOR_ADAFRUIT_GFX u8g2Fonts;



void setup()
{


  display.init(115200);

  fullClear();

  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
  Serial.println("setfont");
  display.setFullWindow();
  Serial.println("first");
  display.firstPage();
  do
  {
    u8g2Fonts.setCursor(5, 25);
    u8g2Fonts.println("不要温顺的走进那个良夜,");
    u8g2Fonts.println("激情不能被消沉的暮色淹没,");
    u8g2Fonts.println("咆哮吧,咆哮,痛斥那光的退缩。");
    u8g2Fonts.println("智者在临终的时候,对黑暗妥协,");
    u8g2Fonts.println("是因为它们的语言已黯然失色,");//");
    u8g2Fonts.println("它们不想被夜色迷惑,");
    u8g2Fonts.println("咆哮吧,咆哮,痛斥那光的退缩。");
    //display.setCursor(80, 80);
    //display.print("Hello World!");
  }
  while (display.nextPage());
}

void loop() {};


打赏

参与人数 1家元 +80 收起 理由
家睦 + 80

查看全部打赏

发表于 2022-9-8 22:42:00 | 显示全部楼层
不会玩,觉得楼主很厉害
回复 支持 反对

使用道具 举报

发表于 2022-9-9 10:03:28 | 显示全部楼层
原来这么复杂的
回复 支持 反对

使用道具 举报

发表于 2022-9-9 10:07:22 | 显示全部楼层
墨水屏看起来就是舒服,不伤眼。
回复 支持 反对

使用道具 举报

发表于 2022-9-9 10:33:58 | 显示全部楼层

墨水屏看起来就是舒服,不伤眼。
回复 支持 反对

使用道具 举报

发表于 2022-9-15 06:36:09 | 显示全部楼层
这个厉害了!谢谢LZ!
回复 支持 反对

使用道具 举报

发表于 2022-9-18 16:12:29 | 显示全部楼层
不会玩,就是来膜拜下
回复 支持 反对

使用道具 举报

发表于 2022-12-22 15:26:39 | 显示全部楼层
看不懂,来学习一下
回复 支持 反对

使用道具 举报

发表于 2022-12-23 13:59:43 | 显示全部楼层
不会玩,觉得楼主很厉害
回复 支持 反对

使用道具 举报

发表于 2022-12-23 15:31:20 | 显示全部楼层
收藏一下  大佬的杰作
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-18 12:57 , Processed in 0.280800 second(s), 15 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表