Сигнал светодиодного индикатора

Контакты 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.

Подготовка оборудования

Используйте компоненты оборудования для создания цепи, как показано на следующей схеме:

Схема Fritzing, демонстрирующая цепь со светодиодным индикатором и резистором

На приведенном выше рисунке изображены следующие подключения:

  • GPIO 18 к LED (более длинный, положительный вывод)
  • Катод LED (более короткий, отрицательный вывод) к резистору 330 ОМ (любой конец)
  • Резистор 330 ОМ (другой конец) к заземлению

При необходимости смотрите следующую схему контактов:

Диаграмма, показывающая схему контактов верхнего контактного ряда GPIO Raspberry Pi. Изображение взято с Raspberry Pi Foundation.
Изображение взято с Raspberry Pi Foundation.

Совет

Для упрощения подключения к заголовку GPIO рекомендуется использовать коммутационную плату GPIO в сочетании с монтажной платой для макетирования или тестирования.

Создайте приложение

Выполните следующие действия в предпочитаемой среде разработки.

  1. Создайте консольное приложение .NET с помощью .NET CLI или Visual Studio. Назовите его BlinkTutorial.

    dotnet new console -o BlinkTutorial
    cd BlinkTutorial
    
  2. Добавьте в проект пакет System.Device.Gpio . Используйте либо .NET CLI из каталога проекта, либо Visual Studio.

    dotnet add package System.Device.Gpio --version 2.2.0-*
    
  3. Замените содержимое 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 выполняется бесконечно. Каждая итерация:
      1. Записывает значение в контакт GPIO 18. Если ledOn имеет значение true, то записывает PinValue.High (вкл.). В противном случае записывается PinValue.Low.
      2. Переходит в спящий режим на 1000 мс.
      3. Переключает значение ledOn.
  4. Построение приложения. При использовании интерфейса командной строки .NET выполните команду dotnet build. Чтобы выполнить сборку в Visual Studio, нажмите клавиши CTRL+SHIFT+B.

  5. Разверните приложение в SBC как автономное приложение. Инструкции см. в статье Развертывание приложений .NET в Raspberry Pi. Обязательно предоставьте исполняемому файлу разрешение execute с помощью chmod +x.

  6. Запустите приложение на устройстве Raspberry Pi, перейдя в каталог развертывания и запустив исполняемый файл.

    ./BlinkTutorial
    

    Светодиодный индикатор мигает каждую секунду.

  7. Завершите работу программы, нажав клавиши CTRL+C.

Поздравляем! Вы использовали GPIO для включения и отключения сигнала (мигания) светодиодного индикатора.

Получение исходного кода

Исходный код для этого учебника доступен на сайте GitHub.

Дальнейшие действия