Menu
CoddyTech

绘制自定义字符

本课属于 Coddy Arduino 学习旅程的“显示器与传感器”单元。第 10 课,共 24 课。

LCD 上的每个字符都是一个 5 列 8 行的点阵。你最多可以设计 8 个自己的字符,编号为 0 到 7。用 8 行来描述一个字符,每行都是一个 5 位模式,其中 1 表示点亮的点:

byte heart[8] = {
  0b00000,
  0b01010,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000,
  0b00000
};

lcd.createChar(0, heart) 会将它存储为字符 0。lcd.write(byte(0)) 会在光标所在位置绘制它。print(0) 则会绘制数字 0。

有一点容易出错:存储字符时,库会将屏幕指向它的字符存储区,而且这个指向会保持不变。之后打印的内容都会写入这个存储区,而不是屏幕。因此,在打印之前,调用 lcd.setCursor()(或 lcd.clear()),并且要在调用 createChar() 之后调用。

lcd.createChar(0, heart);
lcd.setCursor(0, 0);   // 回到屏幕起始位置
lcd.write(byte(0));
challenge icon

挑战

中等

起始代码中有一个笑脸图案。用它打个招呼:

  • 将它存储为字符 0,使用 lcd.createChar()
  • 将光标移动到左上角
  • 打印 Hi (末尾有一个空格),然后绘制笑脸

按“运行”,然后按“检查”。

亲手试试

#include <LiquidCrystal.h>

// RS、E、D4、D5、D6、D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte smiley[8] = {
  0b00000,
  0b01010,
  0b01010,
  0b00000,
  0b10001,
  0b01110,
  0b00000,
  0b00000
};

void setup() {
  lcd.begin(16, 2);

  // 将 smiley 存为字符 0,然后打印 "Hi " 和笑脸
}

void loop() {
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

显示器与传感器中的所有课

自己练习: Arduino 在线编辑器