Поделиться через


Мигать светодиодным индикатором

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

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

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

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

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

  • GPIO 18 к аноду светодиода (более длинный, положительный вывод)
  • Катод светодиода (короткий, отрицательный вывод) к резистору 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 3.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 CLI выполните команду dotnet build. Чтобы собрать проект в Visual Studio, нажмите CTRL+SHIFT+B.

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

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

    ./BlinkTutorial
    

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

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

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

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

Источник этого руководства доступен на сайте GitHub.

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