1.8. 使用LCD显示器显示文本¶
BlueFi正面有一个1.3寸的彩色LCD屏幕,分辨率为240x240点阵,点间距和像素点都很小,这个屏幕几何达到视网膜级别(据说iPhone和iPad 都采用视网膜级别的显示器),显示文字或图案时非常细腻。在准备阶段我们已经介绍过BlieFi的LCD屏幕的用途,他是我们的控制台,无论任何 时候只要脚本程序遇到错误停止执行时,详细的错误提示信息都会显示在这个屏幕上,方便我们快速排查问题所在。
Bluefi在线图形化编程软件中,显示器代码块抽屉与输出类代码块抽屉中都有控制Bluefi的LCD屏幕显示内容的代码块。本节仅介绍如何显示简 单的文本,虽然只是文本显示,但是颜色、字体大小和位置等都是可编程的。
1.8.1. LCD显示器显示文本¶
输出类代码块抽屉中,有控制台输出相关的代码块,我们用到的最多的一般为打印值以及打印字符串。示例程序如下:
你会发现这个示例似曾相识,在上个示例让声音可见中,就曾用到过打印值这个代码块,我们可以将Bluefi上传感器获取到的值打印到LCD屏上, 来帮助我们更好的利用Bluefi上的各种传感器。当然你也可以利用打印字符串代码块,来让LCD屏上显示你想要显示的信息。
接下来,用显示器代码块抽屉中的文本显示代码块来显示文字,我们将显示的文字在放大2倍后才显示。
当你执行了上述示例之后,你会发现,不仅文字的大小放大了,我们还改变了文字的颜色,我们可以通过改变显示文本代码块中颜色栏的数值或者 使用取色器来选取我们想要的文本颜色。 下面来分析本示例程序。示例代码分析:
- 第1行,初始化程序,相当与程序下载进Bluefi之后告知Bluefi从此开始执行程序
- 第2行,设置简单文本显示的标题LCD(Bluefi上LCD显示器的第一行默认是标题行),选择文本颜色红色,以及缩放大小设为2
- 第3行,在1行显示文本hello,选择文本颜色绿色,缩放大小为2
- 第4行,在2行显示文本world,选择文本颜色蓝色,缩放大小为2
- 第5行,一个无穷循环的程序块(让程序进入死循环,以免退出显示文本界面)
第2/3/4行是本示例程序的重点,我们使用显示文本代码块,实现简单文本显示的标题、标题字的缩放倍数(默认为标准字体的2倍)、标题颜色,以及 多行文本的字体缩放倍数(默认为标准字体)、颜色。
1.8.2. 调整屏幕亮度和屏保¶
BlueFi的LCD显示器的设置中有两个可以用的代码块,分别是设置屏幕亮度和旋转屏幕角度。如果你想旋转屏幕的显示,只要修改代码块中的角度值即可。 设置屏幕亮度非常重要,如果你的BlueFi已经运行了很长时间,期间未关闭过屏幕显示,你可以用手指去触摸显示屏能明显感觉到温度。LCD显示屏的是 一种被动显示器,屏幕本身不会发光,必须借助于外接光源才能看到屏幕上的字。因此,绝大多数LCD屏幕都会带着一个背光板,一种面积跟LCD屏幕完全 相同的平面光源,光源被置于LCD屏幕后面。LCD屏背光板是功耗较大的电子元件,而且寿命也比较短,尤其是随着使用时间的增加,背光板的亮度将逐渐 降低。为了节能,大部分时间我们不需要看LCD显示屏的内容时,我们应该关闭LCD屏幕后面的背光板。
运行本示例程序期间不触碰A和B按钮,大约5秒之后,BlueFi的LCD屏幕自动关闭,实际上是背光板的光源被关闭,我们就看不到LCD屏幕上的文字。然后 如果你按下按钮A或按钮B,屏幕会再次亮起,然后大约四秒后,亮度会变暗,再过一秒完全关闭。
这个程序看起来很复杂(28个代码块!),不过很好理解,我们只是在前一个示例的基础上增加一个自动进入/退出屏保的功能。主要修改是增加一个名叫 “screenSave”的无参数无返回值的函数(自制积木),在无穷循环程序块内调用该函数实现自动进入屏保的业务。并在程序的最后增加3行代码块实现,按下 按钮A或B时,自动退出屏保打开显示屏。主程序第七行程序语句中采用或逻辑,满足任何一个条件时,重置变量delayCnt为500,并设置屏幕背光板亮度 为最大(1.0)。在screenSave函数中不断地将变量delayCnt自减1,降到100以下时让屏幕亮度保持为50%;降至50以下时亮度保持20%;降至0时亮度也 设为0,即进入屏保。保持BlueFi处于屏保状态一段时间,你再用手指触摸LCD屏幕,感知他的温度,判断屏保的节能效果。
总结:
- LCD显示器
- LCD显示器背光板的亮度和屏保
- 多行文本显示
- 文本字体的缩放
- 函数及其定义和调用
- 本节中,你总计完成了28行代码的编写工作
重要
出现的代码块
- 旋转显示器角度 (有效值: 0/90/180/270), 旋转BlueFi的LCD屏幕的方向控制
- 设置显示器亮度 (有效值: 0.0~1.0), BlueFi的LCD屏幕的亮度控制
- 控制BlueFi的LCD屏幕显示多行文本
- 或逻辑,满足任一条件即为真