Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Отображение символов LCD полезно для отображения сведений без необходимости внешнего монитора. Обычные символьные дисплеи LCD могут быть подключены непосредственно к контактам GPIO, но такой подход требует использования до 10 контактов GPIO. Для сценариев, требующих подключения к сочетанию устройств, выделение значительной части заголовка GPIO для символьного дисплея часто оказывается нецелесообразным.
Многие производители продают символьные LCD дисплеи размером 20x4 с интегрированным расширителем GPIO. Отображение символов подключается непосредственно к расширительу GPIO, который затем подключается к Raspberry Pi через последовательный протокол канала Inter-Integrated (I2C).
В этом разделе вы будете использовать .NET для отображения текста на дисплее символов LCD с помощью расширителя I2C GPIO.
Предпосылки
- Компьютер на основе ARM (ARMv7 или более поздней версии) с одной платой (SBC)
- Символьный ЖК-дисплей 20x4 с интерфейсом I2C
- Перемычки
- Хлебная доска (необязательно/рекомендуется)
- Плата расширения для Raspberry Pi GPIO (необязательно/рекомендуется)
- Пакет SDK для .NET 8 или более поздней версии
Примечание.
В этом руководстве предполагается, что целевое устройство — Raspberry Pi. Однако это руководство можно использовать для любого SBC на основе Linux, который поддерживает .NET, например Orange Pi, ODROID и многое другое.
Примечание.
Множество производителей выпускают символьные дисплеи LCD. Большинство конструкций идентичны, и производитель не должен влиять на функциональность. Для справки, это руководство было разработано с использованием SunFounder LCD2004.
Подготовка SBC
Убедитесь, что SBC настроен для поддержки следующих служб:
- SSH
- I2C
Для многих устройств дополнительная конфигурация не требуется. Для Raspberry Pi используйте raspi-config команду. Подробнее о raspi-config смотрите в документации Raspberry Pi.
Подготовка оборудования
Используйте провода-перемычки для подключения четырех контактов на расширителе I2C GPIO к Raspberry Pi следующим образом:
- GND на землю
- VCC до 5В
- SDA в SDA (GPIO 2)
- SCL к SCL (GPIO 3)
При необходимости ознакомьтесь со следующими цифрами:
| Интерфейс I2C (задняя часть экрана) | Raspberry Pi GPIO |
|---|---|
|
|
Изображение любезно Raspberry Pi Foundation. |
Подсказка
Использование платы вывода GPIO в сочетании с макетной платой рекомендуется, чтобы упростить подключения к заголовку GPIO.
Создание приложения
Выполните следующие действия в предпочтительной среде разработки:
Создайте консольное приложение .NET с помощью .NET CLI или Visual Studio. Назовите его LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorialДобавьте в проект пакет Iot.Device.Bindings . Используйте .NET CLI из каталога проекта или Visual Studio.
dotnet add package Iot.Device.Bindings --version 3.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путем вызоваI2cDevice.Createи передачи новогоI2cConnectionSettingsс параметрамиbusIdиdeviceAddress. ЭтоI2cDeviceпредставляет шину I2C. Объявлениеusingгарантирует, что объект удаляется, а аппаратные ресурсы освобождаются должным образом.Предупреждение
Адрес устройства для расширителя GPIO зависит от микросхемы, используемой производителем. Расширители GPIO, оснащенные микросхемами PCF8574, используют адрес
0x27, а те, что с чипами PCF8574A, используют адрес0x3F. Обратитесь к документации по вашему ЖК-дисплею.Другое
usingобъявление создает экземплярPcf8574и передаетI2cDeviceв конструктор. Этот экземпляр представляет расширитель GPIO.Другое
usingобъявление создает экземплярLcd2004для представления отображения. В конструктор передаются несколько параметров, описывающих параметры для взаимодействия с расширителем GPIO. Расширитель GPIO передается в качествеcontrollerпараметра.Цикл
whileвыполняется неограниченно. Каждая итерация:- Очищает отображение.
- Устанавливает курсор в первую позицию текущей строки.
- Записывает текущее время на отображение в текущей позиции курсора.
- Выполняет итерацию текущего счетчика строк.
- Спит 1000 мс.
сборка приложения. При использовании .NET CLI выполните команду
dotnet build. Чтобы создать проект в Visual Studio, нажмите CTRL+SHIFT+B.Разверните приложение в SBC как автономное приложение. Инструкции см. в разделе "Развертывание приложений .NET в Raspberry Pi". Обязательно предоставьте исполняемому файлу разрешение на выполнение с помощью
chmod +x.Запустите приложение на Raspberry Pi, переключившись в каталог развертывания и запустив исполняемый файл.
./LcdTutorialНаблюдайте за дисплеем LCD, где текущее время отображается на каждой строке.
Подсказка
Если экран загорается, но не отображается текст, попробуйте настроить контрастный набор на задней части дисплея.
Завершите программу, нажав клавиши CTRL+C.
Поздравляю! Вы отображали текст на дисплее с использованием расширителя I2C и GPIO!
Получение исходного кода
Источник этого руководства доступен на сайте GitHub.