简介
Node-RED 是一个基于流程编程的可视化工具,可用于开发物联网应用、机器人控制系统、数据采集系统、自动化等方面。而 node-red-contrib-pcf8574-lcd 是 Node-RED 的一个 npm 包,它允许我们使用 PCF8574 芯片来控制字符型液晶屏幕(LCD)。
本文将介绍如何使用 node-red-contrib-pcf8574-lcd 这个 npm 包,包括其安装和配置,从而帮助读者更好地应用它来进行 LCD 的控制。
安装
要使用 node-red-contrib-pcf8574-lcd 这个 npm 包,您需要 Node.js 和 Node-RED。首先,打开终端窗口并输入以下命令安装 Node-RED:
$ sudo npm install -g --unsafe-perm node-red
然后,通过运行以下命令安装 node-red-contrib-pcf8574-lcd:
$ cd ~/.node-red $ npm install node-red-contrib-pcf8574-lcd
配置
在安装了 node-red-contrib-pcf8574-lcd 后,我们需要在 Node-RED 编辑器中添加该节点。
首先,启动 Node-RED 的服务器:
$ node-red
然后,通过浏览器打开 http://localhost:1880/ 这个地址,在 Node-RED 编辑器中创建一个新的流程。
在画布中单击鼠标右键,选择“导入”->“Clipboard”,并将以下代码复制到文本框中:
[{"id":"61d11148.7031f4","type":"pcf8574-lcd","z":"c026a040.c898a8","name":"","topic":"","mode":"4","cols":"16","rows":"2","x":320,"y":140,"wires":[]},{"id":"6315280e.1f4208","type":"inject","z":"c026a040.c898a8","name":"Hello, World!","topic":"","payload":"Hello, World!","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":140,"wires":[["61d11148.7031f4"]]},{"id":"d1fca78a.59bcf8","type":"comment","z":"c026a040.c898a8","name":"Show Hello, World! in LCD","info":"","x":160,"y":100,"wires":[]}]
这个流程包含一个“Inject”节点和一个“pcf8574-lcd”节点。当输入“Hello, World!”时,“在 LCD 上显示 Hello, World!” 的信息将在 LCD 上显示出来。
双击“pcf8574-lcd”节点,你可以看到其配置界面。这里有一些选项,但是必须设置 I2C 地址和 I2C 总线号,这是连接 PCF8574 芯片的必要条件。
设置好 I2C 地址和 I2C 总线号后,点击“Done”保存配置更改。现在,您已经配置好了用 node-red-contrib-pcf8574-lcd 来显示 LCD 屏幕。
示例代码
本节将介绍如何在 Node-RED 中运行一些基本的 LCD 控制操作。在这个示例中,我们将使用 PCF8574 芯片控制 16X2 的字符型液晶屏幕。
打开 Node-RED 编辑器,单击左侧的“添加节点”按钮。在搜索栏中输入“pcf8574-lcd”,并将其拖到画布上。
接下来,打开“Inject”节点并将其设置为字符串类型,把要显示的文本输入“Payload”字段中。然后将输出连接到“pcf8574-lcd”节点,并在“pcf8574-lcd”节点中设置正确的 I2C 地址和 I2C 总线号。
点击“Deploy”按钮,现在 LCD 上还没有显示任何内容,因为我们还没有定义任何指令进行 LCD 的初始化。
现在,我们将添加一个 Inject 节点,并将 Payload 设为 JSON 格式的数据。这个数据将定义一些指令来控制 LCD 屏幕。
在“Payload”中输入以下 JSON 数据:
{ "setRS":true, "setD4":false, "setD5":false, "setD6":false, "setD7":false, "setE":true }
这个 JSON 数据将设置“RS”输入和“E”输入(这两个输入由节点定义),以及“D4”-“D7”输入(这些是通过 PCF8574 芯片发送到 LCD 的数据线)。
为了在 LCD 上显示一个字符,我们需要向 LCD 发送字符显示指令。在这个示例中,我们将向 LCD 发送一个单个字符“H”。为此,添加另一个 Inject 节点,Payload 设置为以下 JSON 数据:
{ "setRS":true, "setD4":1, "setD5":0, "setD6":0, "setD7":0, "setE":true }
此时,“RS”输入被设置为“1”,“D4”被设置为“1”,而其他数据线(“D5”-“D7”)被设置为“0”。这些设置将启动LCD 的字符显示。
接下来,我们需要向 LCD 发送“H”字符代码,位于 ASCII 表中的代码为 72。为此,您可以添加另一个节点(如 function 节点),以便将“72”数据转换为有效的 LCD 显示数据。在这个示例中,我们使用以下 JavaScript 代码来完成此操作:
-- -------------------- ---- ------- --- -------- - --- --- ------- - ------------------------ --- ------- - -------- - --- ----------- - - - -------------- - --------------- - -- -- --- - --------------- - -- -- --- - --------------- - -- -- --- - --------------- - -- -- --- - ----------- --- --------------- ----------- - - - -------------- - --------------- - -- -- --- - --------------- - -- -- --- - --------------- - -- -- --- - --------------- - -- -- --- - ----------- --- ------ ----
为了显示字符“H”,我们需要先拆分为两个“nibbles”(含两个比特位的四位二进制数)。然后,我们通过按位操作将 nibble1 映射到 D4-7 和 E 输入,而另一个 nibble2 则映射到 D4-7 和 E 输入。
现在,由 Node-RED 节点控制的 LCD 屏幕上已经显示了“H”字符,集成到您的系统中时,您可以通过编写代码以响应其他系统事件或发送命令来控制 LCD 的展现了。
结论
node-red-contrib-pcf8574-lcd 是强大且易于使用的 npm 包,它使得使用 PCF8574 芯片控制 LCD 屏幕变得非常容易。只要按照本文中的说明进行安装和配置,就可以开始实现 LCD 屏幕的控制和显示。
尽管本文提供了一些示例代码和测试数据,但是开发者们需要使用正确的编程方式,以根据具体情况来编写适合自己的代码。在深入使用 node-red-contrib-pcf8574-lcd 这个 npm 包前,建议先理解 Node-RED 工作原理和 PCF8574 芯片的基础知识。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6006734d890c4f72775837aa