【Wio Terminal】使用LCD屏幕(2)

一、使用不同的字体

本节提供了如何在Wio Terminal设备上选择和使用包含GNU FreeFonts的字体库的指南。
在这里插入图片描述

1、可用的字体

这个字体库中有三种主要的字体可以使用,包括衬线字体(Serif)、无衬线字体(Sans)和等宽字体(Mono)。每种字体都有几种样式(粗体、斜体、倾斜体)和字体大小,从9pt、12pt、18pt到24pt不等。(pt:字体字号大小的单位)

2、在Wio Terminal上使用字体

为了更方便使用这些字体,可以将Seeed_Arduino_LCD文件内的 Free_Fonts.h文件拷贝到项目中。参考路径:

C:\Users\Documents\Arduino\libraries

为了节省大量的打字时间,在sketch中可以通过三种方式引用每种字体:

方法一:使用完整的字体名称

tft.setFreeFont(&FreeSansBoldOblique24pt7b);

在这种方法中,你需要使用字体的完整名称来引用它。这通常包括字体的类型(如Sans Serif)、样式(如Bold、Oblique)和大小(如24pt)。这种方法的优点是清晰明了,但缺点是名称可能很长,容易出错。

方法二:使用FF#编号

tft.setFreeFont(FF32);

在这种方法中,每个字体都被分配了一个唯一的编号(如FF32),你可以在草图中使用这个编号来引用字体。这种方法的优点是简短易记,但缺点是你需要查看Free_Fonts.h文件来找到每个字体的对应编号。

方法三:使用缩写名称

tft.setFreeFont(FSSBO24)

在这种方法中,字体名称被缩写为一系列字母和数字的组合。这些字母代表字体的类型、样式和大小。例如,FSSBO24代表Free Sans Serif Bold Oblique 24pt字体。这种方法的优点是既简短又具有一定的描述性,但缺点是初次使用时可能需要熟悉缩写的含义。

缩写含义解释:
F = Free font(免费字体)
M = Mono(等宽字体)
SS = Sans Serif(无衬线字体,双S用于与衬线字体区分)
S = Serif(衬线字体)
B = Bold(粗体)
O = Oblique(倾斜体,字母O不是数字0)
I = Italic(斜体)
No = point size(字体大小,可以是9、12、18或24)
通过这三种方法,你可以根据自己的喜好和项目需求在Arduino的sketch中灵活地引用和使用字体。

使用不同字体的示例:
使用该实例时,你需要将arduino打开的sketch保存在桌面上或指定文件夹,将下面路径的Free_Fonts.h复制到你刚才保存的sketch的文件夹下。

C:\Users\Documents\Arduino\libraries\Seeed_Arduino_LCD\examples\320x240\All_Free_Fonts_Demo
#include"TFT_eSPI.h"
#include"Free_Fonts.h" // 包含头文件
TFT_eSPI tft;

void setup() {
  tft.begin();
  tft.setRotation(3);
  tft.fillScreen(TFT_BLACK); // 黑色背景
  
  tft.setFreeFont(&FreeSansBoldOblique12pt7b); // 选择 Free, Sans, Bold, Oblique, 12pt的字体
  tft.drawString("Sans Serif 12pt",70,80);// 在(70,80)处开始写下字符串

  tft.setFreeFont(FF10); // 选择 Free, Mono, Oblique, 12pt的字体
  tft.drawString("Mono 12pt",70,110);// 在(70,110)处开始写下字符串

  tft.setFreeFont(FS12); // 选择 Free, Serif, 12pt的字体
  tft.drawString("Serif 12pt",70,140);//在(70,140)处开始写下字符串
  
}
void loop() {}

在这里插入图片描述

二、显示抗锯齿字体

本节演示了如何在Wio Terminal上使用抗锯齿字体(例如显示日文字符、希腊字符和其他UCS-2字形)!此外,平滑字体还可以用于在计算机上,并以您喜欢的字体来显示英文字符。

安装相应的库

如使用LCD屏幕(1)中开头所述,这里同样方法添加.zip文件。
下载Seeed_Arduino_FS
下载Seeed_Arduino_SFUD

生成vlw字体文件

下面演示了如何生成可以在Wio Terminal上用于平滑字体的vlw字体文件:
第一步
下载 processing
第二步
打开软件,点击工具 > 创建字体。
在这里插入图片描述

第三步
将会出现一个“创建字体”窗口。您可以在此选择您计算机上可用的字体。您可以更改字体大小,并点击“字符…”进行进一步的设置。此外,您还可以更改vlw文件的文件名。
在这里插入图片描述

第四步
点击Characters,将会出现一个“字符选择器”窗口,您可以在其中选择特定语言的Unicode字符块(例如本例中的“基本拉丁语”)。对于亚洲字符(中文、日文、韩文),建议使用“CJK Compatibility ”或“CJK category”的Unicode字符块。点击“确定”以保存字体设置。(日常用中文可使用“CJK Unified Ideographs”)
在这里插入图片描述
第五步
点击文件 > 保存。
在这里插入图片描述

储存到SD卡中

现在,将vlw字体文件复制到SD卡中,并将SD卡重新插入Wio Terminal。

配置LCD库

默认情况下,LCD库中的平滑字体选项是关闭的,以节省Wio Terminal的资源。因此,需要在Wio Terminal中配置以启用平滑字体。

请导航到Arduino库文件夹(libraries)-> Seeed_Arduino_LCD,并使用编辑器打开User_Setup.h文件。搜索#define SMOOTH_FONT并将该行取消注释,如下所示:
在这里插入图片描述
现在你已经在Wio Terminal上启用了平滑字体,可以显示任何你喜欢的字体或字符了!

显示

将SD卡内的字体加载到Wio Terminal:

void loadFont(String fontName);	// fontName是vlw文件名。

在屏幕上显示vlw文件中的所有字符:

void showFont(uint32_t td);		// td是显示所有字符时屏幕之间的延迟时间

卸载字体:

void unloadFont();

要在屏幕上显示字符,您可以使用类似于TFT库中的函数,如 tft.println()。此外,您还可以使用其他函数,如tft.setCursor()tft.setTextColor(),来改变显示字符的位置和颜色。

示例:
可以直接点击此处直接下载代码文件,无需复制下面代码。
这里不建议使用中文,因为中文的.vlw太大, tft.loadFont()加载后会爆内存,博主的单片机甚至出现无法烧录的情况。若您出现在此情况,请拔出SD卡,下拉复位后,再烧录。

#include<SPI.h>
#include "Seeed_FS.h"
#include "SD/Seeed_SD.h"
#include"TFT_eSPI.h"

TFT_eSPI tft;

void setup() {
    tft.begin();
    Serial.begin(115200);
    tft.setRotation(3);
    tft.fillScreen(TFT_BLACK); //Black background

    while(!SD.begin(SDCARD_SS_PIN, SDCARD_SPI)){
        Serial.println("SD card error!\n");
        while(1);
  }
  delay(1000);

  tft.loadFont("Apple-Chancery-24");
  // Show all characters on screen with 2 second (2000ms) delay between screens
  tft.showFont(2000); // Note: This function moves the cursor position!

  tft.setTextColor(TFT_RED,TFT_BLACK);
  tft.setCursor(0,0);

  tft.println("Konnichiwa");
  tft.println("Sayonara");
  tft.println();
  tft.unloadFont();

  tft.loadFont("Latin-Hiragana-24");
  tft.setTextColor(TFT_GREEN,TFT_BLACK);
  tft.println("こんにちは");
  tft.println("さようなら");
  tft.unloadFont();
  
}
void loop(){}
  • 34
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值