培训
学习路径
创建并运行简单的 C# 控制台应用程序(C# 入门,第 2 部分) - Training
使用 Visual Studio Code 开发实现数组、foreach 循环和 if 语句的 C# 控制台应用程序。
LCD 字符显示器可用于显示信息,而无需外部监视器。 常见的 LCD 字符显示器可以直接连接到 GPIO 引脚,但这种方法最多需要使用 10 个 GPIO 引脚。 对于需要连接到设备组合的场景,将如此多的 GPIO 标头分配给字符显示器通常不切实际。
许多制造商会销售带有集成 GPIO 扩展器的 20x4 LCD 字符显示器。 字符显示器将直接连接到 GPIO 扩展器,然后通过内置集成电路 (I2C) 串行协议连接到 Raspberry Pi。
在本主题中,你将使用 .NET 通过 I2C GPIO 扩展器在 LCD 字符显示器上显示文本。
备注
本教程编写时假设目标设备是 Raspberry Pi。 但是,本教程可用于支持 .NET 的任何基于 Linux 的 SBC,例如 Orange Pi、ODROID 等。
备注
LCD 字符显示器的制造商有很多。 大多数设计都相同,并且制造商不应对功能进行任何更改。 作为参考,本教程按照 SunFounder LCD2004 开发。
确保 SBC 配置为支持以下服务:
对于许多设备,无需其他配置。 对于 Raspberry Pi,请使用 raspi-config
命令。 有关 raspi-config
的详细信息,请参阅 Raspberry Pi 文档。
使用跳线将 I2C GPIO 扩展器上的四个引脚连接到 Raspberry Pi,如下所示:
请根据需要参阅下图:
I2C 接口(显示器背面) | Raspberry Pi GPIO |
---|---|
图片由 Raspberry Pi 基金会提供。 |
提示
建议将 GPIO 分组讨论板与试验板结合使用,以便简化与 GPIO 标头的连接。
在首选开发环境中完成以下步骤:
使用 .NET CLI 或 Visual Studio 创建新 .Net 控制台应用。 将其命名为 LcdTutorial。
dotnet new console -o LcdTutorial
cd LcdTutorial
将 Iot.Device.Bindings 包添加到项目。 使用项目目录或 Visual Studio 中的任一 .NET CLI。
dotnet add package Iot.Device.Bindings --version 2.2.0-*
将 Program.cs 的内容替换为以下代码:
using System;
using System.Device.Gpio;
using System.Device.I2c;
using System.Threading;
using Iot.Device.CharacterLcd;
using Iot.Device.Pcx857x;
Console.WriteLine("Displaying current time. Press Ctrl+C to end.");
using I2cDevice i2c = I2cDevice.Create(new I2cConnectionSettings(1, 0x27));
using var driver = new Pcf8574(i2c);
using var lcd = new Lcd2004(registerSelectPin: 0,
enablePin: 2,
dataPins: new int[] { 4, 5, 6, 7 },
backlightPin: 3,
backlightBrightness: 0.1f,
readWritePin: 1,
controller: new GpioController(PinNumberingScheme.Logical, driver));
int currentLine = 0;
while (true)
{
lcd.Clear();
lcd.SetCursorPosition(0,currentLine);
lcd.Write(DateTime.Now.ToShortTimeString());
currentLine = (currentLine == 3) ? 0 : currentLine + 1;
Thread.Sleep(1000);
}
在上述代码中:
一个 using 声明通过调用 I2cDevice.Create
并传入带有 busId
和 deviceAddress
参数的新 I2cConnectionSettings
来创建 I2cDevice
的实例。 这个 I2cDevice
表示 I2C 总线。
using
声明可确保对象已处置,硬件资源已正确释放。
警告
GPIO 扩展器的设备地址取决于制造商使用的芯片。 配备 PCF8574 芯片的 GPIO 扩展器使用地址 0x27
,而使用 PCF8574A 芯片的扩展器使用地址 0x3F
。 请查阅你的 LCD 文档。
另一个 using
声明创建 Pcf8574
的实例,并将 I2cDevice
传递到构造函数中。 此实例表示 GPIO 扩展器。
另一个 using
声明创建 Lcd2004
的实例以表示显示器。 多个参数已传递给构造函数,该构造函数描述用于与 GPIO 扩展器进行通信的设置。 GPIO 扩展器作为 controller
参数传递。
while
循环无限期运行。 每次迭代:
构建应用程序。 如果使用的是 .NET CLI,请运行 dotnet build
。 若要在 Visual Studio 中进行生成,请按 Ctrl+Shift+B。
将该应用作为独立应用部署到 SBC。 有关说明,请参阅将 .NET 应用部署到 Raspberry Pi。 请确保使用 chmod +x
指定可执行的 execute 权限。
通过切换到部署目录并运行可执行文件,在 Raspberry Pi 上运行该应用。
./LcdTutorial
观察 LCD 字符显示器,当前时间应显示在每一行上。
提示
如果显示器已亮起,但看不到任何文本,请尝试调整显示器背面的对比度拨盘。
按 Ctrl+C 终止程序。
恭喜! 你已使用 I2C 和 GPIO 扩展器在 LCD 上显示了文本!
GitHub 上提供此教程的源。
培训
学习路径
创建并运行简单的 C# 控制台应用程序(C# 入门,第 2 部分) - Training
使用 Visual Studio Code 开发实现数组、foreach 循环和 if 语句的 C# 控制台应用程序。
文档
了解如何使用 .NET IoT 库读取温度、气压和湿度。
了解如何通过 .NET IoT 库将 GPIO 用于二进制输入。
了解如何使用模数转换器读取可变电压值。