绘制自定义字符
本课属于 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));挑战
中等起始代码中有一个笑脸图案。用它打个招呼:
- 将它存储为字符 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() {
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
显示器与传感器中的所有课
自己练习: Arduino 在线编辑器