Сигнал светодиодного индикатора
Контакты GPIO можно контролировать по отдельности. Это удобно для управления светодиодными индикаторами, ретрансляторами и другими устройствами с отслеживанием состояния. В этом разделе вы будете использовать .NET и контакты GPIO Raspberry Pi для подключения питания к светодиодному индикатору и активации повторяющегося мигания.
Предварительные требования
- Однопанерный компьютер (SBC) на основе ARM (ARMv7 или более поздней версии)
- Светодиодный индикатор 5 мм
- Резистор 330 Ом
- монтажная плата;
- оптоволоконные кабеля с разъемами на обоих концах;
- Коммутационная плата GPIO Raspberry Pi (необязательно/рекомендуется)
- Пакет SDK для .NET 7 или более поздней версии
Примечание
В этом руководстве предполагается, что целевым устройством является Raspberry Pi. Однако это руководство можно использовать для любого SBC под управлением Linux, поддерживающего .NET, например Orange Pi, ODROID и т. д.
Убедитесь, что на устройстве включен протокол SSH. Сведения о Raspberry Pi см. в разделе Настройка SSH-сервера в документации по Raspberry Pi.
Подготовка оборудования
Используйте компоненты оборудования для создания цепи, как показано на следующей схеме:
На приведенном выше рисунке изображены следующие подключения:
- GPIO 18 к LED (более длинный, положительный вывод)
- Катод LED (более короткий, отрицательный вывод) к резистору 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 2.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 выполните команду
dotnet build
. Чтобы выполнить сборку в Visual Studio, нажмите клавиши CTRL+SHIFT+B.Разверните приложение в SBC как автономное приложение. Инструкции см. в статье Развертывание приложений .NET в Raspberry Pi. Обязательно предоставьте исполняемому файлу разрешение execute с помощью
chmod +x
.Запустите приложение на устройстве Raspberry Pi, перейдя в каталог развертывания и запустив исполняемый файл.
./BlinkTutorial
Светодиодный индикатор мигает каждую секунду.
Завершите работу программы, нажав клавиши CTRL+C.
Поздравляем! Вы использовали GPIO для включения и отключения сигнала (мигания) светодиодного индикатора.
Получение исходного кода
Исходный код для этого учебника доступен на сайте GitHub.