Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Контактами GPIO (общего назначения для ввода-вывода) можно управлять по отдельности. Это полезно для управления индикаторами, ретрансляторами и другими устройствами с отслеживанием состояния. В этом разделе вы будете использовать .NET и пины GPIO Raspberry Pi для питания светодиодных индикаторов и многократного мигания.
Предпосылки
- Компьютер на основе ARM (ARMv7 или более поздней версии) с одной платой (SBC)
- 5 мм светодиод
- Резистор 330 Ω
- Макет
- Перемычки
- Плата расширения для Raspberry Pi GPIO (необязательно/рекомендуется)
- Пакет SDK для .NET 8 или более поздней версии
Примечание.
В этом руководстве предполагается, что целевое устройство — Raspberry Pi. Однако это руководство можно использовать для любого SBC на основе Linux, который поддерживает .NET, например Orange Pi, ODROID и многое другое.
Убедитесь, что SSH включен на устройстве. Для Raspberry Pi см. инструкции по настройке SSH-сервера в документации raspberry Pi.
Подготовка оборудования
Используйте аппаратные компоненты для построения канала, как показано на следующей схеме:
На приведенном выше рисунке показаны следующие подключения:
- GPIO 18 к аноду светодиода (более длинный, положительный вывод)
- Катод светодиода (короткий, отрицательный вывод) к резистору 330 Ω (любой конец)
- 330 Ω резистор (другой конец) на землю
При необходимости обратитесь к следующей схеме закреплений:
Изображение любезно Raspberry Pi Foundation.
Подсказка
Использование платы вывода GPIO в сочетании с макетной платой рекомендуется, чтобы упростить подключения к заголовку GPIO.
Создание приложения
Выполните следующие действия в предпочтительной среде разработки:
Создайте консольное приложение .NET с помощью .NET CLI или Visual Studio. Назовите его BlinkTutorial.
dotnet new console -o BlinkTutorial cd BlinkTutorial
Добавьте в проект пакет System.Device.Gpio . Используйте .NET CLI из каталога проекта или Visual Studio.
dotnet add package System.Device.Gpio --version 3.2.0-*
Замените содержимое файла Program.cs кодом, приведенным ниже.
using System; using System.Device.Gpio; using System.Threading; Console.WriteLine("Blinking LED. Press Ctrl+C to end."); int pin = 18; using var controller = new GpioController(); controller.OpenPin(pin, PinMode.Output); bool ledOn = true; while (true) { controller.Write(pin, ((ledOn) ? PinValue.High : PinValue.Low)); Thread.Sleep(1000); ledOn = !ledOn; }
В предыдущем коде:
-
Инструкция using создает экземпляр
GpioController
. Объявлениеusing
гарантирует, что объект удаляется, а аппаратные ресурсы освобождаются должным образом. - Пин-код GPIO 18 открыт для выходных данных
- Цикл
while
выполняется неограниченно. Каждая итерация:- Записывает значение в пин-код GPIO 18. Если
ledOn
задано значение true, он записываетPinValue.High
(вкл.). В противном случае он записываетPinValue.Low
. - Спит 1000 мс.
- Переключает значение
ledOn
.
- Записывает значение в пин-код GPIO 18. Если
-
Инструкция using создает экземпляр
сборка приложения. При использовании .NET CLI выполните команду
dotnet build
. Чтобы собрать проект в Visual Studio, нажмите CTRL+SHIFT+B.Разверните приложение в SBC как автономное приложение. Инструкции см. в разделе "Развертывание приложений .NET в Raspberry Pi". Обязательно предоставьте исполняемому файлу разрешение на выполнение с помощью
chmod +x
.Запустите приложение на Raspberry Pi, переключившись в каталог развертывания и запустив исполняемый файл.
./BlinkTutorial
Светодиодный индикатор мигает, включаясь и выключаясь каждую секунду.
Завершите программу, нажав клавиши CTRL+C.
Поздравляю! Вы использовали GPIO для мигания светодиодных индикаторов.
Получение исходного кода
Источник этого руководства доступен на сайте GitHub.