学习目标:
使用自己建的文字库,正确的输出到TFT屏幕,SD²字体皮肤修改
学习内容:
- 新建字库
- Arduino TFT_eSPI库学习使用
先上图
1.新建字库:
1. 工具链接
链接:https://pan.baidu.com/s/15QirgylK-ahK2wDEnV7YBQ?pwd=5985
提取码:5985
2.操作步骤
大概流程:选择字体文件(如宋体、黑体等),在指定字体文件中提取你需要的文字,因为如果将整
个字体文件做成字库,将导致 ESP32 的 Flash 存不下,因此只提取必要的部分,提取出来后,会重
新生成字体文件,然后使用 Processing 软件,将字体文件转换成 vlw 格式,转换过程中需要设置转
换后的字体大小,最后将 vlw 转换成 hex 文件,将 hex 做成一个 h 头文件即可,具体步骤如下:
【1】在 C:\Windows\Fonts 路径下,选择需要的字体文件,并进行如下操作:(黑体文件名:simhei.ttf)
复制的路径也可以自定义,推荐在桌面新建文件夹,便于整理
【2】打开“自提提取.exe”软件,随后根据下图操作:
【3】生成 TTF 文件之后,自动弹出的文件夹中找到红色箭头所指的文件,将其复制至
Create_font\data 路径下
【4】打开“processing.exe”,随后在 processing 中根据下图打开“Create_font\Create_font.pde”
【5】点击运行后,会开始自动转换,并弹出下列窗口,红色箭头处就能看到 vlw 文件
【6】到这里,字体的提取以及制作工作基本完成,现在还差最后一步,将 vlw 文件转换成 hex 文件
打开链接:http://tomeko.net/online_tools/file_to_hex.php?lang=en
【7】创建.h 文件,按下图做程序框架,其中 PROGMEM 必须加上,作用是该数组数据存至 Flash 用户程序中而非 RAM,用来减少 RAM 的占用。最后将 vlw 转换成 hex 数据粘贴至红箭头内
2.Arduino TFT_eSPI库学习使用
clk.setColorDepth(8); //设置颜色分辨率,
clk.loadFont(ROCCB_60);//设置字体这里就是.H文件里面的字体
if(hour()!=Hour_sign || reflash_en == 1)//时钟刷新
{
clk.createSprite(85, 85); //创建一块区域,长为85,高为85的区域
clk.fillSprite(bgColor); //该区域填充黑色,bgColor是0x0000
clk.setTextDatum(CC_DATUM); //设置文字模式
clk.setTextColor(TFT_BLUE, bgColor);//文字填充白色,背景黑色
clk.drawString(String(hour()/10),10,40);
//参数解读(显示的数据;在创建区域的哪个X位置;在创建区域的Y位置)
clk.drawString(String(hour()%10),50,40);
clk.drawString(":",75,30);
clk.pushSprite(5,75); //推送创建的区域到屏幕(推送屏幕的起始位置为屏屏幕坐标的(5,75))
clk.deleteSprite();//释放ROM
Hour_sign = hour();
}
以后SD² 想换字体皮肤直接更换库ROCCB_60.h中的内容即可